/*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/
var game = (function($protobuf) {
    "use strict";

    // Common aliases
    var $Reader = $protobuf.Reader, $util = $protobuf.util;
    
    // Exported root namespace
    var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});
    
    $root.Army = (function() {
    
        /**
         * Properties of an Army.
         * @exports IArmy
         * @interface IArmy
         * @property {number|null} [id] Army id
         * @property {number|null} [powerId] Army powerId
         * @property {string|null} [name] Army name
         * @property {string|null} [nameEn] Army nameEn
         * @property {string|null} [intro] Army intro
         * @property {number|null} [lineType] Army lineType
         * @property {number|null} [preArmy] Army preArmy
         * @property {number|null} [preLv] Army preLv
         * @property {string|null} [cost] Army cost
         * @property {string|null} [dropStr] Army dropStr
         * @property {number|null} [armyType] Army armyType
         * @property {number|null} [plotId] Army plotId
         * @property {number|null} [special] Army special
         * @property {number|null} [chooseLv] Army chooseLv
         * @property {string|null} [boss] Army boss
         * @property {number|null} [teamMateId] Army teamMateId
         * @property {string|null} [functionIcon] Army functionIcon
         * @property {string|null} [functionName] Army functionName
         * @property {number|null} [functionScale] Army functionScale
         * @property {string|null} [bgPic] Army bgPic
         * @property {string|null} [repeatDrop] Army repeatDrop
         * @property {string|null} [extraDrop] Army extraDrop
         * @property {string|null} [keyDrop] Army keyDrop
         */
    
        /**
         * Constructs a new Army.
         * @exports Army
         * @classdesc Represents an Army.
         * @implements IArmy
         * @constructor
         * @param {IArmy=} [properties] Properties to set
         */
        function Army(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Army id.
         * @member {number} id
         * @memberof Army
         * @instance
         */
        Army.prototype.id = 0;
    
        /**
         * Army powerId.
         * @member {number} powerId
         * @memberof Army
         * @instance
         */
        Army.prototype.powerId = 0;
    
        /**
         * Army name.
         * @member {string} name
         * @memberof Army
         * @instance
         */
        Army.prototype.name = "";
    
        /**
         * Army nameEn.
         * @member {string} nameEn
         * @memberof Army
         * @instance
         */
        Army.prototype.nameEn = "";
    
        /**
         * Army intro.
         * @member {string} intro
         * @memberof Army
         * @instance
         */
        Army.prototype.intro = "";
    
        /**
         * Army lineType.
         * @member {number} lineType
         * @memberof Army
         * @instance
         */
        Army.prototype.lineType = 0;
    
        /**
         * Army preArmy.
         * @member {number} preArmy
         * @memberof Army
         * @instance
         */
        Army.prototype.preArmy = 0;
    
        /**
         * Army preLv.
         * @member {number} preLv
         * @memberof Army
         * @instance
         */
        Army.prototype.preLv = 0;
    
        /**
         * Army cost.
         * @member {string} cost
         * @memberof Army
         * @instance
         */
        Army.prototype.cost = "";
    
        /**
         * Army dropStr.
         * @member {string} dropStr
         * @memberof Army
         * @instance
         */
        Army.prototype.dropStr = "";
    
        /**
         * Army armyType.
         * @member {number} armyType
         * @memberof Army
         * @instance
         */
        Army.prototype.armyType = 0;
    
        /**
         * Army plotId.
         * @member {number} plotId
         * @memberof Army
         * @instance
         */
        Army.prototype.plotId = 0;
    
        /**
         * Army special.
         * @member {number} special
         * @memberof Army
         * @instance
         */
        Army.prototype.special = 0;
    
        /**
         * Army chooseLv.
         * @member {number} chooseLv
         * @memberof Army
         * @instance
         */
        Army.prototype.chooseLv = 0;
    
        /**
         * Army boss.
         * @member {string} boss
         * @memberof Army
         * @instance
         */
        Army.prototype.boss = "";
    
        /**
         * Army teamMateId.
         * @member {number} teamMateId
         * @memberof Army
         * @instance
         */
        Army.prototype.teamMateId = 0;
    
        /**
         * Army functionIcon.
         * @member {string} functionIcon
         * @memberof Army
         * @instance
         */
        Army.prototype.functionIcon = "";
    
        /**
         * Army functionName.
         * @member {string} functionName
         * @memberof Army
         * @instance
         */
        Army.prototype.functionName = "";
    
        /**
         * Army functionScale.
         * @member {number} functionScale
         * @memberof Army
         * @instance
         */
        Army.prototype.functionScale = 0;
    
        /**
         * Army bgPic.
         * @member {string} bgPic
         * @memberof Army
         * @instance
         */
        Army.prototype.bgPic = "";
    
        /**
         * Army repeatDrop.
         * @member {string} repeatDrop
         * @memberof Army
         * @instance
         */
        Army.prototype.repeatDrop = "";
    
        /**
         * Army extraDrop.
         * @member {string} extraDrop
         * @memberof Army
         * @instance
         */
        Army.prototype.extraDrop = "";
    
        /**
         * Army keyDrop.
         * @member {string} keyDrop
         * @memberof Army
         * @instance
         */
        Army.prototype.keyDrop = "";
    
        /**
         * Decodes an Army message from the specified reader or buffer.
         * @function decode
         * @memberof Army
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Army} Army
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Army.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Army();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.powerId = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.nameEn = reader.string();
                    break;
                case 5:
                    message.intro = reader.string();
                    break;
                case 6:
                    message.lineType = reader.int32();
                    break;
                case 7:
                    message.preArmy = reader.int32();
                    break;
                case 8:
                    message.preLv = reader.int32();
                    break;
                case 9:
                    message.cost = reader.string();
                    break;
                case 10:
                    message.dropStr = reader.string();
                    break;
                case 11:
                    message.armyType = reader.int32();
                    break;
                case 12:
                    message.plotId = reader.int32();
                    break;
                case 13:
                    message.special = reader.int32();
                    break;
                case 14:
                    message.chooseLv = reader.int32();
                    break;
                case 15:
                    message.boss = reader.string();
                    break;
                case 16:
                    message.teamMateId = reader.int32();
                    break;
                case 17:
                    message.functionIcon = reader.string();
                    break;
                case 18:
                    message.functionName = reader.string();
                    break;
                case 19:
                    message.functionScale = reader.int32();
                    break;
                case 20:
                    message.bgPic = reader.string();
                    break;
                case 21:
                    message.repeatDrop = reader.string();
                    break;
                case 22:
                    message.extraDrop = reader.string();
                    break;
                case 23:
                    message.keyDrop = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Army;
    })();
    
    $root.ArmyGroup = (function() {
    
        /**
         * Properties of an ArmyGroup.
         * @exports IArmyGroup
         * @interface IArmyGroup
         * @property {number|null} [id] ArmyGroup id
         * @property {number|null} [fightCapacity] ArmyGroup fightCapacity
         * @property {string|null} [createReward] ArmyGroup createReward
         * @property {string|null} [joinReward] ArmyGroup joinReward
         */
    
        /**
         * Constructs a new ArmyGroup.
         * @exports ArmyGroup
         * @classdesc Represents an ArmyGroup.
         * @implements IArmyGroup
         * @constructor
         * @param {IArmyGroup=} [properties] Properties to set
         */
        function ArmyGroup(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * ArmyGroup id.
         * @member {number} id
         * @memberof ArmyGroup
         * @instance
         */
        ArmyGroup.prototype.id = 0;
    
        /**
         * ArmyGroup fightCapacity.
         * @member {number} fightCapacity
         * @memberof ArmyGroup
         * @instance
         */
        ArmyGroup.prototype.fightCapacity = 0;
    
        /**
         * ArmyGroup createReward.
         * @member {string} createReward
         * @memberof ArmyGroup
         * @instance
         */
        ArmyGroup.prototype.createReward = "";
    
        /**
         * ArmyGroup joinReward.
         * @member {string} joinReward
         * @memberof ArmyGroup
         * @instance
         */
        ArmyGroup.prototype.joinReward = "";
    
        /**
         * Decodes an ArmyGroup message from the specified reader or buffer.
         * @function decode
         * @memberof ArmyGroup
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {ArmyGroup} ArmyGroup
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ArmyGroup.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ArmyGroup();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.fightCapacity = reader.int32();
                    break;
                case 3:
                    message.createReward = reader.string();
                    break;
                case 4:
                    message.joinReward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return ArmyGroup;
    })();
    
    $root.ArmyMonster = (function() {
    
        /**
         * Properties of an ArmyMonster.
         * @exports IArmyMonster
         * @interface IArmyMonster
         * @property {number|null} [id] ArmyMonster id
         * @property {number|null} [armyId] ArmyMonster armyId
         * @property {number|null} [turnId] ArmyMonster turnId
         * @property {number|null} [posId] ArmyMonster posId
         * @property {number|null} [monsterId] ArmyMonster monsterId
         * @property {number|null} [monsterLv] ArmyMonster monsterLv
         * @property {string|null} [ai] ArmyMonster ai
         */
    
        /**
         * Constructs a new ArmyMonster.
         * @exports ArmyMonster
         * @classdesc Represents an ArmyMonster.
         * @implements IArmyMonster
         * @constructor
         * @param {IArmyMonster=} [properties] Properties to set
         */
        function ArmyMonster(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * ArmyMonster id.
         * @member {number} id
         * @memberof ArmyMonster
         * @instance
         */
        ArmyMonster.prototype.id = 0;
    
        /**
         * ArmyMonster armyId.
         * @member {number} armyId
         * @memberof ArmyMonster
         * @instance
         */
        ArmyMonster.prototype.armyId = 0;
    
        /**
         * ArmyMonster turnId.
         * @member {number} turnId
         * @memberof ArmyMonster
         * @instance
         */
        ArmyMonster.prototype.turnId = 0;
    
        /**
         * ArmyMonster posId.
         * @member {number} posId
         * @memberof ArmyMonster
         * @instance
         */
        ArmyMonster.prototype.posId = 0;
    
        /**
         * ArmyMonster monsterId.
         * @member {number} monsterId
         * @memberof ArmyMonster
         * @instance
         */
        ArmyMonster.prototype.monsterId = 0;
    
        /**
         * ArmyMonster monsterLv.
         * @member {number} monsterLv
         * @memberof ArmyMonster
         * @instance
         */
        ArmyMonster.prototype.monsterLv = 0;
    
        /**
         * ArmyMonster ai.
         * @member {string} ai
         * @memberof ArmyMonster
         * @instance
         */
        ArmyMonster.prototype.ai = "";
    
        /**
         * Decodes an ArmyMonster message from the specified reader or buffer.
         * @function decode
         * @memberof ArmyMonster
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {ArmyMonster} ArmyMonster
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ArmyMonster.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ArmyMonster();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.armyId = reader.int32();
                    break;
                case 3:
                    message.turnId = reader.int32();
                    break;
                case 4:
                    message.posId = reader.int32();
                    break;
                case 5:
                    message.monsterId = reader.int32();
                    break;
                case 6:
                    message.monsterLv = reader.int32();
                    break;
                case 7:
                    message.ai = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return ArmyMonster;
    })();
    
    $root.Bar = (function() {
    
        /**
         * Properties of a Bar.
         * @exports IBar
         * @interface IBar
         * @property {number|null} [id] Bar id
         * @property {string|null} [name] Bar name
         * @property {number|null} [type] Bar type
         * @property {number|null} [times] Bar times
         * @property {number|null} [maxFree] Bar maxFree
         * @property {string|null} [cost] Bar cost
         * @property {string|null} [costAdd] Bar costAdd
         * @property {string|null} [costMax] Bar costMax
         */
    
        /**
         * Constructs a new Bar.
         * @exports Bar
         * @classdesc Represents a Bar.
         * @implements IBar
         * @constructor
         * @param {IBar=} [properties] Properties to set
         */
        function Bar(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Bar id.
         * @member {number} id
         * @memberof Bar
         * @instance
         */
        Bar.prototype.id = 0;
    
        /**
         * Bar name.
         * @member {string} name
         * @memberof Bar
         * @instance
         */
        Bar.prototype.name = "";
    
        /**
         * Bar type.
         * @member {number} type
         * @memberof Bar
         * @instance
         */
        Bar.prototype.type = 0;
    
        /**
         * Bar times.
         * @member {number} times
         * @memberof Bar
         * @instance
         */
        Bar.prototype.times = 0;
    
        /**
         * Bar maxFree.
         * @member {number} maxFree
         * @memberof Bar
         * @instance
         */
        Bar.prototype.maxFree = 0;
    
        /**
         * Bar cost.
         * @member {string} cost
         * @memberof Bar
         * @instance
         */
        Bar.prototype.cost = "";
    
        /**
         * Bar costAdd.
         * @member {string} costAdd
         * @memberof Bar
         * @instance
         */
        Bar.prototype.costAdd = "";
    
        /**
         * Bar costMax.
         * @member {string} costMax
         * @memberof Bar
         * @instance
         */
        Bar.prototype.costMax = "";
    
        /**
         * Decodes a Bar message from the specified reader or buffer.
         * @function decode
         * @memberof Bar
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Bar} Bar
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Bar.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Bar();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.type = reader.int32();
                    break;
                case 4:
                    message.times = reader.int32();
                    break;
                case 5:
                    message.maxFree = reader.int32();
                    break;
                case 6:
                    message.cost = reader.string();
                    break;
                case 7:
                    message.costAdd = reader.string();
                    break;
                case 8:
                    message.costMax = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Bar;
    })();
    
    $root.BarDrop = (function() {
    
        /**
         * Properties of a BarDrop.
         * @exports IBarDrop
         * @interface IBarDrop
         * @property {number|null} [id] BarDrop id
         * @property {number|null} [type] BarDrop type
         * @property {number|null} [times] BarDrop times
         * @property {number|null} [minCard] BarDrop minCard
         * @property {number|null} [weight] BarDrop weight
         * @property {string|null} [reward] BarDrop reward
         */
    
        /**
         * Constructs a new BarDrop.
         * @exports BarDrop
         * @classdesc Represents a BarDrop.
         * @implements IBarDrop
         * @constructor
         * @param {IBarDrop=} [properties] Properties to set
         */
        function BarDrop(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * BarDrop id.
         * @member {number} id
         * @memberof BarDrop
         * @instance
         */
        BarDrop.prototype.id = 0;
    
        /**
         * BarDrop type.
         * @member {number} type
         * @memberof BarDrop
         * @instance
         */
        BarDrop.prototype.type = 0;
    
        /**
         * BarDrop times.
         * @member {number} times
         * @memberof BarDrop
         * @instance
         */
        BarDrop.prototype.times = 0;
    
        /**
         * BarDrop minCard.
         * @member {number} minCard
         * @memberof BarDrop
         * @instance
         */
        BarDrop.prototype.minCard = 0;
    
        /**
         * BarDrop weight.
         * @member {number} weight
         * @memberof BarDrop
         * @instance
         */
        BarDrop.prototype.weight = 0;
    
        /**
         * BarDrop reward.
         * @member {string} reward
         * @memberof BarDrop
         * @instance
         */
        BarDrop.prototype.reward = "";
    
        /**
         * Decodes a BarDrop message from the specified reader or buffer.
         * @function decode
         * @memberof BarDrop
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {BarDrop} BarDrop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        BarDrop.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.BarDrop();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.times = reader.int32();
                    break;
                case 4:
                    message.minCard = reader.int32();
                    break;
                case 5:
                    message.weight = reader.int32();
                    break;
                case 6:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return BarDrop;
    })();
    
    $root.Barracks = (function() {
    
        /**
         * Properties of a Barracks.
         * @exports IBarracks
         * @interface IBarracks
         * @property {number|null} [id] Barracks id
         * @property {string|null} [name] Barracks name
         * @property {string|null} [intro] Barracks intro
         * @property {string|null} [choice1] Barracks choice1
         * @property {string|null} [reward1] Barracks reward1
         * @property {string|null} [choice2] Barracks choice2
         * @property {string|null} [reward2] Barracks reward2
         * @property {number|null} [pic] Barracks pic
         */
    
        /**
         * Constructs a new Barracks.
         * @exports Barracks
         * @classdesc Represents a Barracks.
         * @implements IBarracks
         * @constructor
         * @param {IBarracks=} [properties] Properties to set
         */
        function Barracks(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Barracks id.
         * @member {number} id
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.id = 0;
    
        /**
         * Barracks name.
         * @member {string} name
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.name = "";
    
        /**
         * Barracks intro.
         * @member {string} intro
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.intro = "";
    
        /**
         * Barracks choice1.
         * @member {string} choice1
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.choice1 = "";
    
        /**
         * Barracks reward1.
         * @member {string} reward1
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.reward1 = "";
    
        /**
         * Barracks choice2.
         * @member {string} choice2
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.choice2 = "";
    
        /**
         * Barracks reward2.
         * @member {string} reward2
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.reward2 = "";
    
        /**
         * Barracks pic.
         * @member {number} pic
         * @memberof Barracks
         * @instance
         */
        Barracks.prototype.pic = 0;
    
        /**
         * Decodes a Barracks message from the specified reader or buffer.
         * @function decode
         * @memberof Barracks
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Barracks} Barracks
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Barracks.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Barracks();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.intro = reader.string();
                    break;
                case 4:
                    message.choice1 = reader.string();
                    break;
                case 5:
                    message.reward1 = reader.string();
                    break;
                case 6:
                    message.choice2 = reader.string();
                    break;
                case 7:
                    message.reward2 = reader.string();
                    break;
                case 8:
                    message.pic = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Barracks;
    })();
    
    $root.BuildingInfo = (function() {
    
        /**
         * Properties of a BuildingInfo.
         * @exports IBuildingInfo
         * @interface IBuildingInfo
         * @property {number|null} [id] BuildingInfo id
         * @property {number|null} [buildingId] BuildingInfo buildingId
         * @property {string|null} [name] BuildingInfo name
         * @property {number|null} [lv] BuildingInfo lv
         * @property {string|null} [limit] BuildingInfo limit
         * @property {string|null} [cost] BuildingInfo cost
         * @property {string|null} [reward] BuildingInfo reward
         */
    
        /**
         * Constructs a new BuildingInfo.
         * @exports BuildingInfo
         * @classdesc Represents a BuildingInfo.
         * @implements IBuildingInfo
         * @constructor
         * @param {IBuildingInfo=} [properties] Properties to set
         */
        function BuildingInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * BuildingInfo id.
         * @member {number} id
         * @memberof BuildingInfo
         * @instance
         */
        BuildingInfo.prototype.id = 0;
    
        /**
         * BuildingInfo buildingId.
         * @member {number} buildingId
         * @memberof BuildingInfo
         * @instance
         */
        BuildingInfo.prototype.buildingId = 0;
    
        /**
         * BuildingInfo name.
         * @member {string} name
         * @memberof BuildingInfo
         * @instance
         */
        BuildingInfo.prototype.name = "";
    
        /**
         * BuildingInfo lv.
         * @member {number} lv
         * @memberof BuildingInfo
         * @instance
         */
        BuildingInfo.prototype.lv = 0;
    
        /**
         * BuildingInfo limit.
         * @member {string} limit
         * @memberof BuildingInfo
         * @instance
         */
        BuildingInfo.prototype.limit = "";
    
        /**
         * BuildingInfo cost.
         * @member {string} cost
         * @memberof BuildingInfo
         * @instance
         */
        BuildingInfo.prototype.cost = "";
    
        /**
         * BuildingInfo reward.
         * @member {string} reward
         * @memberof BuildingInfo
         * @instance
         */
        BuildingInfo.prototype.reward = "";
    
        /**
         * Decodes a BuildingInfo message from the specified reader or buffer.
         * @function decode
         * @memberof BuildingInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {BuildingInfo} BuildingInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        BuildingInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.BuildingInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.buildingId = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.lv = reader.int32();
                    break;
                case 5:
                    message.limit = reader.string();
                    break;
                case 6:
                    message.cost = reader.string();
                    break;
                case 7:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return BuildingInfo;
    })();
    
    $root.CbtDrop = (function() {
    
        /**
         * Properties of a CbtDrop.
         * @exports ICbtDrop
         * @interface ICbtDrop
         * @property {number|null} [id] CbtDrop id
         * @property {number|null} [type] CbtDrop type
         * @property {number|null} [lv] CbtDrop lv
         * @property {string|null} [reward] CbtDrop reward
         */
    
        /**
         * Constructs a new CbtDrop.
         * @exports CbtDrop
         * @classdesc Represents a CbtDrop.
         * @implements ICbtDrop
         * @constructor
         * @param {ICbtDrop=} [properties] Properties to set
         */
        function CbtDrop(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * CbtDrop id.
         * @member {number} id
         * @memberof CbtDrop
         * @instance
         */
        CbtDrop.prototype.id = 0;
    
        /**
         * CbtDrop type.
         * @member {number} type
         * @memberof CbtDrop
         * @instance
         */
        CbtDrop.prototype.type = 0;
    
        /**
         * CbtDrop lv.
         * @member {number} lv
         * @memberof CbtDrop
         * @instance
         */
        CbtDrop.prototype.lv = 0;
    
        /**
         * CbtDrop reward.
         * @member {string} reward
         * @memberof CbtDrop
         * @instance
         */
        CbtDrop.prototype.reward = "";
    
        /**
         * Decodes a CbtDrop message from the specified reader or buffer.
         * @function decode
         * @memberof CbtDrop
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {CbtDrop} CbtDrop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        CbtDrop.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.CbtDrop();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.lv = reader.int32();
                    break;
                case 4:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return CbtDrop;
    })();
    
    $root.CityReward = (function() {
    
        /**
         * Properties of a CityReward.
         * @exports ICityReward
         * @interface ICityReward
         * @property {number|null} [id] CityReward id
         * @property {number|null} [lv] CityReward lv
         * @property {string|null} [reward1] CityReward reward1
         * @property {number|null} [reward1Rate] CityReward reward1Rate
         */
    
        /**
         * Constructs a new CityReward.
         * @exports CityReward
         * @classdesc Represents a CityReward.
         * @implements ICityReward
         * @constructor
         * @param {ICityReward=} [properties] Properties to set
         */
        function CityReward(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * CityReward id.
         * @member {number} id
         * @memberof CityReward
         * @instance
         */
        CityReward.prototype.id = 0;
    
        /**
         * CityReward lv.
         * @member {number} lv
         * @memberof CityReward
         * @instance
         */
        CityReward.prototype.lv = 0;
    
        /**
         * CityReward reward1.
         * @member {string} reward1
         * @memberof CityReward
         * @instance
         */
        CityReward.prototype.reward1 = "";
    
        /**
         * CityReward reward1Rate.
         * @member {number} reward1Rate
         * @memberof CityReward
         * @instance
         */
        CityReward.prototype.reward1Rate = 0;
    
        /**
         * Decodes a CityReward message from the specified reader or buffer.
         * @function decode
         * @memberof CityReward
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {CityReward} CityReward
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        CityReward.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.CityReward();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.lv = reader.int32();
                    break;
                case 3:
                    message.reward1 = reader.string();
                    break;
                case 4:
                    message.reward1Rate = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return CityReward;
    })();
    
    $root.DbVersion = (function() {
    
        /**
         * Properties of a DbVersion.
         * @exports IDbVersion
         * @interface IDbVersion
         * @property {number|null} [id] DbVersion id
         * @property {string|null} [version] DbVersion version
         */
    
        /**
         * Constructs a new DbVersion.
         * @exports DbVersion
         * @classdesc Represents a DbVersion.
         * @implements IDbVersion
         * @constructor
         * @param {IDbVersion=} [properties] Properties to set
         */
        function DbVersion(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * DbVersion id.
         * @member {number} id
         * @memberof DbVersion
         * @instance
         */
        DbVersion.prototype.id = 0;
    
        /**
         * DbVersion version.
         * @member {string} version
         * @memberof DbVersion
         * @instance
         */
        DbVersion.prototype.version = "";
    
        /**
         * Decodes a DbVersion message from the specified reader or buffer.
         * @function decode
         * @memberof DbVersion
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {DbVersion} DbVersion
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        DbVersion.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.DbVersion();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.version = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return DbVersion;
    })();
    
    $root.DoorConfig = (function() {
    
        /**
         * Properties of a DoorConfig.
         * @exports IDoorConfig
         * @interface IDoorConfig
         * @property {number|null} [id] DoorConfig id
         * @property {string|null} [waitTime] DoorConfig waitTime
         * @property {number|null} [dialogRate] DoorConfig dialogRate
         * @property {string|null} [dialogList] DoorConfig dialogList
         * @property {string|null} [evtList] DoorConfig evtList
         * @property {string|null} [dialogDefault] DoorConfig dialogDefault
         */
    
        /**
         * Constructs a new DoorConfig.
         * @exports DoorConfig
         * @classdesc Represents a DoorConfig.
         * @implements IDoorConfig
         * @constructor
         * @param {IDoorConfig=} [properties] Properties to set
         */
        function DoorConfig(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * DoorConfig id.
         * @member {number} id
         * @memberof DoorConfig
         * @instance
         */
        DoorConfig.prototype.id = 0;
    
        /**
         * DoorConfig waitTime.
         * @member {string} waitTime
         * @memberof DoorConfig
         * @instance
         */
        DoorConfig.prototype.waitTime = "";
    
        /**
         * DoorConfig dialogRate.
         * @member {number} dialogRate
         * @memberof DoorConfig
         * @instance
         */
        DoorConfig.prototype.dialogRate = 0;
    
        /**
         * DoorConfig dialogList.
         * @member {string} dialogList
         * @memberof DoorConfig
         * @instance
         */
        DoorConfig.prototype.dialogList = "";
    
        /**
         * DoorConfig evtList.
         * @member {string} evtList
         * @memberof DoorConfig
         * @instance
         */
        DoorConfig.prototype.evtList = "";
    
        /**
         * DoorConfig dialogDefault.
         * @member {string} dialogDefault
         * @memberof DoorConfig
         * @instance
         */
        DoorConfig.prototype.dialogDefault = "";
    
        /**
         * Decodes a DoorConfig message from the specified reader or buffer.
         * @function decode
         * @memberof DoorConfig
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {DoorConfig} DoorConfig
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        DoorConfig.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.DoorConfig();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.waitTime = reader.string();
                    break;
                case 3:
                    message.dialogRate = reader.int32();
                    break;
                case 4:
                    message.dialogList = reader.string();
                    break;
                case 5:
                    message.evtList = reader.string();
                    break;
                case 6:
                    message.dialogDefault = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return DoorConfig;
    })();
    
    $root.Equip = (function() {
    
        /**
         * Properties of an Equip.
         * @exports IEquip
         * @interface IEquip
         * @property {number|null} [id] Equip id
         * @property {number|null} [quality] Equip quality
         * @property {string|null} [name] Equip name
         * @property {string|null} [effect] Equip effect
         * @property {string|null} [intro] Equip intro
         * @property {string|null} [pic] Equip pic
         * @property {string|null} [source] Equip source
         * @property {number|null} [sp] Equip sp
         */
    
        /**
         * Constructs a new Equip.
         * @exports Equip
         * @classdesc Represents an Equip.
         * @implements IEquip
         * @constructor
         * @param {IEquip=} [properties] Properties to set
         */
        function Equip(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Equip id.
         * @member {number} id
         * @memberof Equip
         * @instance
         */
        Equip.prototype.id = 0;
    
        /**
         * Equip quality.
         * @member {number} quality
         * @memberof Equip
         * @instance
         */
        Equip.prototype.quality = 0;
    
        /**
         * Equip name.
         * @member {string} name
         * @memberof Equip
         * @instance
         */
        Equip.prototype.name = "";
    
        /**
         * Equip effect.
         * @member {string} effect
         * @memberof Equip
         * @instance
         */
        Equip.prototype.effect = "";
    
        /**
         * Equip intro.
         * @member {string} intro
         * @memberof Equip
         * @instance
         */
        Equip.prototype.intro = "";
    
        /**
         * Equip pic.
         * @member {string} pic
         * @memberof Equip
         * @instance
         */
        Equip.prototype.pic = "";
    
        /**
         * Equip source.
         * @member {string} source
         * @memberof Equip
         * @instance
         */
        Equip.prototype.source = "";
    
        /**
         * Equip sp.
         * @member {number} sp
         * @memberof Equip
         * @instance
         */
        Equip.prototype.sp = 0;
    
        /**
         * Decodes an Equip message from the specified reader or buffer.
         * @function decode
         * @memberof Equip
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Equip} Equip
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Equip.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Equip();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.quality = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.effect = reader.string();
                    break;
                case 5:
                    message.intro = reader.string();
                    break;
                case 6:
                    message.pic = reader.string();
                    break;
                case 7:
                    message.source = reader.string();
                    break;
                case 8:
                    message.sp = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Equip;
    })();
    
    $root.EventConsumeRebate = (function() {
    
        /**
         * Properties of an EventConsumeRebate.
         * @exports IEventConsumeRebate
         * @interface IEventConsumeRebate
         * @property {number|null} [id] EventConsumeRebate id
         * @property {number|null} [consume] EventConsumeRebate consume
         * @property {string|null} [reward] EventConsumeRebate reward
         */
    
        /**
         * Constructs a new EventConsumeRebate.
         * @exports EventConsumeRebate
         * @classdesc Represents an EventConsumeRebate.
         * @implements IEventConsumeRebate
         * @constructor
         * @param {IEventConsumeRebate=} [properties] Properties to set
         */
        function EventConsumeRebate(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventConsumeRebate id.
         * @member {number} id
         * @memberof EventConsumeRebate
         * @instance
         */
        EventConsumeRebate.prototype.id = 0;
    
        /**
         * EventConsumeRebate consume.
         * @member {number} consume
         * @memberof EventConsumeRebate
         * @instance
         */
        EventConsumeRebate.prototype.consume = 0;
    
        /**
         * EventConsumeRebate reward.
         * @member {string} reward
         * @memberof EventConsumeRebate
         * @instance
         */
        EventConsumeRebate.prototype.reward = "";
    
        /**
         * Decodes an EventConsumeRebate message from the specified reader or buffer.
         * @function decode
         * @memberof EventConsumeRebate
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventConsumeRebate} EventConsumeRebate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventConsumeRebate.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventConsumeRebate();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.consume = reader.int32();
                    break;
                case 3:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventConsumeRebate;
    })();
    
    $root.EventDailyLogin = (function() {
    
        /**
         * Properties of an EventDailyLogin.
         * @exports IEventDailyLogin
         * @interface IEventDailyLogin
         * @property {number|null} [id] EventDailyLogin id
         * @property {string|null} [reward] EventDailyLogin reward
         */
    
        /**
         * Constructs a new EventDailyLogin.
         * @exports EventDailyLogin
         * @classdesc Represents an EventDailyLogin.
         * @implements IEventDailyLogin
         * @constructor
         * @param {IEventDailyLogin=} [properties] Properties to set
         */
        function EventDailyLogin(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventDailyLogin id.
         * @member {number} id
         * @memberof EventDailyLogin
         * @instance
         */
        EventDailyLogin.prototype.id = 0;
    
        /**
         * EventDailyLogin reward.
         * @member {string} reward
         * @memberof EventDailyLogin
         * @instance
         */
        EventDailyLogin.prototype.reward = "";
    
        /**
         * Decodes an EventDailyLogin message from the specified reader or buffer.
         * @function decode
         * @memberof EventDailyLogin
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventDailyLogin} EventDailyLogin
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventDailyLogin.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventDailyLogin();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventDailyLogin;
    })();
    
    $root.EventEquipBag = (function() {
    
        /**
         * Properties of an EventEquipBag.
         * @exports IEventEquipBag
         * @interface IEventEquipBag
         * @property {number|null} [id] EventEquipBag id
         * @property {number|null} [collection] EventEquipBag collection
         * @property {string|null} [name] EventEquipBag name
         * @property {number|null} [num] EventEquipBag num
         * @property {number|null} [cost] EventEquipBag cost
         * @property {string|null} [reward] EventEquipBag reward
         * @property {string|null} [intro] EventEquipBag intro
         */
    
        /**
         * Constructs a new EventEquipBag.
         * @exports EventEquipBag
         * @classdesc Represents an EventEquipBag.
         * @implements IEventEquipBag
         * @constructor
         * @param {IEventEquipBag=} [properties] Properties to set
         */
        function EventEquipBag(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventEquipBag id.
         * @member {number} id
         * @memberof EventEquipBag
         * @instance
         */
        EventEquipBag.prototype.id = 0;
    
        /**
         * EventEquipBag collection.
         * @member {number} collection
         * @memberof EventEquipBag
         * @instance
         */
        EventEquipBag.prototype.collection = 0;
    
        /**
         * EventEquipBag name.
         * @member {string} name
         * @memberof EventEquipBag
         * @instance
         */
        EventEquipBag.prototype.name = "";
    
        /**
         * EventEquipBag num.
         * @member {number} num
         * @memberof EventEquipBag
         * @instance
         */
        EventEquipBag.prototype.num = 0;
    
        /**
         * EventEquipBag cost.
         * @member {number} cost
         * @memberof EventEquipBag
         * @instance
         */
        EventEquipBag.prototype.cost = 0;
    
        /**
         * EventEquipBag reward.
         * @member {string} reward
         * @memberof EventEquipBag
         * @instance
         */
        EventEquipBag.prototype.reward = "";
    
        /**
         * EventEquipBag intro.
         * @member {string} intro
         * @memberof EventEquipBag
         * @instance
         */
        EventEquipBag.prototype.intro = "";
    
        /**
         * Decodes an EventEquipBag message from the specified reader or buffer.
         * @function decode
         * @memberof EventEquipBag
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventEquipBag} EventEquipBag
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventEquipBag.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventEquipBag();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.collection = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.num = reader.int32();
                    break;
                case 5:
                    message.cost = reader.int32();
                    break;
                case 6:
                    message.reward = reader.string();
                    break;
                case 7:
                    message.intro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventEquipBag;
    })();
    
    $root.EventFishTreasure = (function() {
    
        /**
         * Properties of an EventFishTreasure.
         * @exports IEventFishTreasure
         * @interface IEventFishTreasure
         * @property {number|null} [id] EventFishTreasure id
         * @property {number|null} [eventType] EventFishTreasure eventType
         * @property {number|null} [choice] EventFishTreasure choice
         * @property {number|null} [times] EventFishTreasure times
         * @property {number|null} [cost] EventFishTreasure cost
         */
    
        /**
         * Constructs a new EventFishTreasure.
         * @exports EventFishTreasure
         * @classdesc Represents an EventFishTreasure.
         * @implements IEventFishTreasure
         * @constructor
         * @param {IEventFishTreasure=} [properties] Properties to set
         */
        function EventFishTreasure(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventFishTreasure id.
         * @member {number} id
         * @memberof EventFishTreasure
         * @instance
         */
        EventFishTreasure.prototype.id = 0;
    
        /**
         * EventFishTreasure eventType.
         * @member {number} eventType
         * @memberof EventFishTreasure
         * @instance
         */
        EventFishTreasure.prototype.eventType = 0;
    
        /**
         * EventFishTreasure choice.
         * @member {number} choice
         * @memberof EventFishTreasure
         * @instance
         */
        EventFishTreasure.prototype.choice = 0;
    
        /**
         * EventFishTreasure times.
         * @member {number} times
         * @memberof EventFishTreasure
         * @instance
         */
        EventFishTreasure.prototype.times = 0;
    
        /**
         * EventFishTreasure cost.
         * @member {number} cost
         * @memberof EventFishTreasure
         * @instance
         */
        EventFishTreasure.prototype.cost = 0;
    
        /**
         * Decodes an EventFishTreasure message from the specified reader or buffer.
         * @function decode
         * @memberof EventFishTreasure
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventFishTreasure} EventFishTreasure
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventFishTreasure.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventFishTreasure();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.eventType = reader.int32();
                    break;
                case 3:
                    message.choice = reader.int32();
                    break;
                case 4:
                    message.times = reader.int32();
                    break;
                case 5:
                    message.cost = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventFishTreasure;
    })();
    
    $root.EventFishTreasureDrop = (function() {
    
        /**
         * Properties of an EventFishTreasureDrop.
         * @exports IEventFishTreasureDrop
         * @interface IEventFishTreasureDrop
         * @property {number|null} [id] EventFishTreasureDrop id
         * @property {number|null} [eventType] EventFishTreasureDrop eventType
         * @property {number|null} [choice] EventFishTreasureDrop choice
         * @property {number|null} [fishTimes] EventFishTreasureDrop fishTimes
         * @property {number|null} [weight] EventFishTreasureDrop weight
         * @property {string|null} [reward] EventFishTreasureDrop reward
         */
    
        /**
         * Constructs a new EventFishTreasureDrop.
         * @exports EventFishTreasureDrop
         * @classdesc Represents an EventFishTreasureDrop.
         * @implements IEventFishTreasureDrop
         * @constructor
         * @param {IEventFishTreasureDrop=} [properties] Properties to set
         */
        function EventFishTreasureDrop(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventFishTreasureDrop id.
         * @member {number} id
         * @memberof EventFishTreasureDrop
         * @instance
         */
        EventFishTreasureDrop.prototype.id = 0;
    
        /**
         * EventFishTreasureDrop eventType.
         * @member {number} eventType
         * @memberof EventFishTreasureDrop
         * @instance
         */
        EventFishTreasureDrop.prototype.eventType = 0;
    
        /**
         * EventFishTreasureDrop choice.
         * @member {number} choice
         * @memberof EventFishTreasureDrop
         * @instance
         */
        EventFishTreasureDrop.prototype.choice = 0;
    
        /**
         * EventFishTreasureDrop fishTimes.
         * @member {number} fishTimes
         * @memberof EventFishTreasureDrop
         * @instance
         */
        EventFishTreasureDrop.prototype.fishTimes = 0;
    
        /**
         * EventFishTreasureDrop weight.
         * @member {number} weight
         * @memberof EventFishTreasureDrop
         * @instance
         */
        EventFishTreasureDrop.prototype.weight = 0;
    
        /**
         * EventFishTreasureDrop reward.
         * @member {string} reward
         * @memberof EventFishTreasureDrop
         * @instance
         */
        EventFishTreasureDrop.prototype.reward = "";
    
        /**
         * Decodes an EventFishTreasureDrop message from the specified reader or buffer.
         * @function decode
         * @memberof EventFishTreasureDrop
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventFishTreasureDrop} EventFishTreasureDrop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventFishTreasureDrop.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventFishTreasureDrop();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.eventType = reader.int32();
                    break;
                case 3:
                    message.choice = reader.int32();
                    break;
                case 4:
                    message.fishTimes = reader.int32();
                    break;
                case 5:
                    message.weight = reader.int32();
                    break;
                case 6:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventFishTreasureDrop;
    })();
    
    $root.EventLimitBar = (function() {
    
        /**
         * Properties of an EventLimitBar.
         * @exports IEventLimitBar
         * @interface IEventLimitBar
         * @property {number|null} [id] EventLimitBar id
         * @property {string|null} [name] EventLimitBar name
         * @property {number|null} [beginTime] EventLimitBar beginTime
         * @property {number|null} [time] EventLimitBar time
         * @property {string|null} [cost] EventLimitBar cost
         * @property {string|null} [costAdd] EventLimitBar costAdd
         * @property {string|null} [costMax] EventLimitBar costMax
         * @property {number|null} [barDropType] EventLimitBar barDropType
         * @property {number|null} [dropTimes] EventLimitBar dropTimes
         * @property {string|null} [intro] EventLimitBar intro
         */
    
        /**
         * Constructs a new EventLimitBar.
         * @exports EventLimitBar
         * @classdesc Represents an EventLimitBar.
         * @implements IEventLimitBar
         * @constructor
         * @param {IEventLimitBar=} [properties] Properties to set
         */
        function EventLimitBar(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventLimitBar id.
         * @member {number} id
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.id = 0;
    
        /**
         * EventLimitBar name.
         * @member {string} name
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.name = "";
    
        /**
         * EventLimitBar beginTime.
         * @member {number} beginTime
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.beginTime = 0;
    
        /**
         * EventLimitBar time.
         * @member {number} time
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.time = 0;
    
        /**
         * EventLimitBar cost.
         * @member {string} cost
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.cost = "";
    
        /**
         * EventLimitBar costAdd.
         * @member {string} costAdd
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.costAdd = "";
    
        /**
         * EventLimitBar costMax.
         * @member {string} costMax
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.costMax = "";
    
        /**
         * EventLimitBar barDropType.
         * @member {number} barDropType
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.barDropType = 0;
    
        /**
         * EventLimitBar dropTimes.
         * @member {number} dropTimes
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.dropTimes = 0;
    
        /**
         * EventLimitBar intro.
         * @member {string} intro
         * @memberof EventLimitBar
         * @instance
         */
        EventLimitBar.prototype.intro = "";
    
        /**
         * Decodes an EventLimitBar message from the specified reader or buffer.
         * @function decode
         * @memberof EventLimitBar
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventLimitBar} EventLimitBar
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventLimitBar.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventLimitBar();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.beginTime = reader.int32();
                    break;
                case 4:
                    message.time = reader.int32();
                    break;
                case 5:
                    message.cost = reader.string();
                    break;
                case 6:
                    message.costAdd = reader.string();
                    break;
                case 7:
                    message.costMax = reader.string();
                    break;
                case 8:
                    message.barDropType = reader.int32();
                    break;
                case 9:
                    message.dropTimes = reader.int32();
                    break;
                case 10:
                    message.intro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventLimitBar;
    })();
    
    $root.EventLvUp = (function() {
    
        /**
         * Properties of an EventLvUp.
         * @exports IEventLvUp
         * @interface IEventLvUp
         * @property {number|null} [id] EventLvUp id
         * @property {number|null} [lv] EventLvUp lv
         * @property {string|null} [reward] EventLvUp reward
         */
    
        /**
         * Constructs a new EventLvUp.
         * @exports EventLvUp
         * @classdesc Represents an EventLvUp.
         * @implements IEventLvUp
         * @constructor
         * @param {IEventLvUp=} [properties] Properties to set
         */
        function EventLvUp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventLvUp id.
         * @member {number} id
         * @memberof EventLvUp
         * @instance
         */
        EventLvUp.prototype.id = 0;
    
        /**
         * EventLvUp lv.
         * @member {number} lv
         * @memberof EventLvUp
         * @instance
         */
        EventLvUp.prototype.lv = 0;
    
        /**
         * EventLvUp reward.
         * @member {string} reward
         * @memberof EventLvUp
         * @instance
         */
        EventLvUp.prototype.reward = "";
    
        /**
         * Decodes an EventLvUp message from the specified reader or buffer.
         * @function decode
         * @memberof EventLvUp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventLvUp} EventLvUp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventLvUp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventLvUp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.lv = reader.int32();
                    break;
                case 3:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventLvUp;
    })();
    
    $root.EventPayInfo = (function() {
    
        /**
         * Properties of an EventPayInfo.
         * @exports IEventPayInfo
         * @interface IEventPayInfo
         * @property {number|null} [id] EventPayInfo id
         * @property {number|null} [type] EventPayInfo type
         * @property {number|null} [index] EventPayInfo index
         * @property {string|null} [reward] EventPayInfo reward
         */
    
        /**
         * Constructs a new EventPayInfo.
         * @exports EventPayInfo
         * @classdesc Represents an EventPayInfo.
         * @implements IEventPayInfo
         * @constructor
         * @param {IEventPayInfo=} [properties] Properties to set
         */
        function EventPayInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventPayInfo id.
         * @member {number} id
         * @memberof EventPayInfo
         * @instance
         */
        EventPayInfo.prototype.id = 0;
    
        /**
         * EventPayInfo type.
         * @member {number} type
         * @memberof EventPayInfo
         * @instance
         */
        EventPayInfo.prototype.type = 0;
    
        /**
         * EventPayInfo index.
         * @member {number} index
         * @memberof EventPayInfo
         * @instance
         */
        EventPayInfo.prototype.index = 0;
    
        /**
         * EventPayInfo reward.
         * @member {string} reward
         * @memberof EventPayInfo
         * @instance
         */
        EventPayInfo.prototype.reward = "";
    
        /**
         * Decodes an EventPayInfo message from the specified reader or buffer.
         * @function decode
         * @memberof EventPayInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventPayInfo} EventPayInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventPayInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventPayInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.index = reader.int32();
                    break;
                case 4:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventPayInfo;
    })();
    
    $root.EventRanking = (function() {
    
        /**
         * Properties of an EventRanking.
         * @exports IEventRanking
         * @interface IEventRanking
         * @property {number|null} [id] EventRanking id
         * @property {number|null} [type] EventRanking type
         * @property {string|null} [name] EventRanking name
         * @property {number|null} [rank] EventRanking rank
         * @property {string|null} [extraRequest] EventRanking extraRequest
         * @property {string|null} [reward] EventRanking reward
         */
    
        /**
         * Constructs a new EventRanking.
         * @exports EventRanking
         * @classdesc Represents an EventRanking.
         * @implements IEventRanking
         * @constructor
         * @param {IEventRanking=} [properties] Properties to set
         */
        function EventRanking(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventRanking id.
         * @member {number} id
         * @memberof EventRanking
         * @instance
         */
        EventRanking.prototype.id = 0;
    
        /**
         * EventRanking type.
         * @member {number} type
         * @memberof EventRanking
         * @instance
         */
        EventRanking.prototype.type = 0;
    
        /**
         * EventRanking name.
         * @member {string} name
         * @memberof EventRanking
         * @instance
         */
        EventRanking.prototype.name = "";
    
        /**
         * EventRanking rank.
         * @member {number} rank
         * @memberof EventRanking
         * @instance
         */
        EventRanking.prototype.rank = 0;
    
        /**
         * EventRanking extraRequest.
         * @member {string} extraRequest
         * @memberof EventRanking
         * @instance
         */
        EventRanking.prototype.extraRequest = "";
    
        /**
         * EventRanking reward.
         * @member {string} reward
         * @memberof EventRanking
         * @instance
         */
        EventRanking.prototype.reward = "";
    
        /**
         * Decodes an EventRanking message from the specified reader or buffer.
         * @function decode
         * @memberof EventRanking
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventRanking} EventRanking
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventRanking.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventRanking();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.rank = reader.int32();
                    break;
                case 5:
                    message.extraRequest = reader.string();
                    break;
                case 6:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventRanking;
    })();
    
    $root.EventShare = (function() {
    
        /**
         * Properties of an EventShare.
         * @exports IEventShare
         * @interface IEventShare
         * @property {number|null} [id] EventShare id
         * @property {string|null} [request] EventShare request
         * @property {string|null} [reward] EventShare reward
         */
    
        /**
         * Constructs a new EventShare.
         * @exports EventShare
         * @classdesc Represents an EventShare.
         * @implements IEventShare
         * @constructor
         * @param {IEventShare=} [properties] Properties to set
         */
        function EventShare(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * EventShare id.
         * @member {number} id
         * @memberof EventShare
         * @instance
         */
        EventShare.prototype.id = 0;
    
        /**
         * EventShare request.
         * @member {string} request
         * @memberof EventShare
         * @instance
         */
        EventShare.prototype.request = "";
    
        /**
         * EventShare reward.
         * @member {string} reward
         * @memberof EventShare
         * @instance
         */
        EventShare.prototype.reward = "";
    
        /**
         * Decodes an EventShare message from the specified reader or buffer.
         * @function decode
         * @memberof EventShare
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {EventShare} EventShare
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        EventShare.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.EventShare();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.request = reader.string();
                    break;
                case 3:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return EventShare;
    })();
    
    $root.FarmRank = (function() {
    
        /**
         * Properties of a FarmRank.
         * @exports IFarmRank
         * @interface IFarmRank
         * @property {number|null} [id] FarmRank id
         * @property {number|null} [num] FarmRank num
         * @property {number|null} [rank] FarmRank rank
         * @property {string|null} [intro] FarmRank intro
         * @property {number|null} [timePerMax] FarmRank timePerMax
         */
    
        /**
         * Constructs a new FarmRank.
         * @exports FarmRank
         * @classdesc Represents a FarmRank.
         * @implements IFarmRank
         * @constructor
         * @param {IFarmRank=} [properties] Properties to set
         */
        function FarmRank(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * FarmRank id.
         * @member {number} id
         * @memberof FarmRank
         * @instance
         */
        FarmRank.prototype.id = 0;
    
        /**
         * FarmRank num.
         * @member {number} num
         * @memberof FarmRank
         * @instance
         */
        FarmRank.prototype.num = 0;
    
        /**
         * FarmRank rank.
         * @member {number} rank
         * @memberof FarmRank
         * @instance
         */
        FarmRank.prototype.rank = 0;
    
        /**
         * FarmRank intro.
         * @member {string} intro
         * @memberof FarmRank
         * @instance
         */
        FarmRank.prototype.intro = "";
    
        /**
         * FarmRank timePerMax.
         * @member {number} timePerMax
         * @memberof FarmRank
         * @instance
         */
        FarmRank.prototype.timePerMax = 0;
    
        /**
         * Decodes a FarmRank message from the specified reader or buffer.
         * @function decode
         * @memberof FarmRank
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {FarmRank} FarmRank
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FarmRank.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.FarmRank();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.num = reader.int32();
                    break;
                case 3:
                    message.rank = reader.int32();
                    break;
                case 4:
                    message.intro = reader.string();
                    break;
                case 5:
                    message.timePerMax = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return FarmRank;
    })();
    
    $root.FightForZhongyuan = (function() {
    
        /**
         * Properties of a FightForZhongyuan.
         * @exports IFightForZhongyuan
         * @interface IFightForZhongyuan
         * @property {number|null} [id] FightForZhongyuan id
         * @property {number|null} [days] FightForZhongyuan days
         * @property {number|null} [index] FightForZhongyuan index
         * @property {number|null} [request] FightForZhongyuan request
         * @property {string|null} [reward] FightForZhongyuan reward
         */
    
        /**
         * Constructs a new FightForZhongyuan.
         * @exports FightForZhongyuan
         * @classdesc Represents a FightForZhongyuan.
         * @implements IFightForZhongyuan
         * @constructor
         * @param {IFightForZhongyuan=} [properties] Properties to set
         */
        function FightForZhongyuan(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * FightForZhongyuan id.
         * @member {number} id
         * @memberof FightForZhongyuan
         * @instance
         */
        FightForZhongyuan.prototype.id = 0;
    
        /**
         * FightForZhongyuan days.
         * @member {number} days
         * @memberof FightForZhongyuan
         * @instance
         */
        FightForZhongyuan.prototype.days = 0;
    
        /**
         * FightForZhongyuan index.
         * @member {number} index
         * @memberof FightForZhongyuan
         * @instance
         */
        FightForZhongyuan.prototype.index = 0;
    
        /**
         * FightForZhongyuan request.
         * @member {number} request
         * @memberof FightForZhongyuan
         * @instance
         */
        FightForZhongyuan.prototype.request = 0;
    
        /**
         * FightForZhongyuan reward.
         * @member {string} reward
         * @memberof FightForZhongyuan
         * @instance
         */
        FightForZhongyuan.prototype.reward = "";
    
        /**
         * Decodes a FightForZhongyuan message from the specified reader or buffer.
         * @function decode
         * @memberof FightForZhongyuan
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {FightForZhongyuan} FightForZhongyuan
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        FightForZhongyuan.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.FightForZhongyuan();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.days = reader.int32();
                    break;
                case 3:
                    message.index = reader.int32();
                    break;
                case 4:
                    message.request = reader.int32();
                    break;
                case 5:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return FightForZhongyuan;
    })();
    
    $root.Food = (function() {
    
        /**
         * Properties of a Food.
         * @exports IFood
         * @interface IFood
         * @property {number|null} [id] Food id
         * @property {number|null} [lv] Food lv
         * @property {number|null} [foodMax] Food foodMax
         * @property {number|null} [attCost] Food attCost
         */
    
        /**
         * Constructs a new Food.
         * @exports Food
         * @classdesc Represents a Food.
         * @implements IFood
         * @constructor
         * @param {IFood=} [properties] Properties to set
         */
        function Food(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Food id.
         * @member {number} id
         * @memberof Food
         * @instance
         */
        Food.prototype.id = 0;
    
        /**
         * Food lv.
         * @member {number} lv
         * @memberof Food
         * @instance
         */
        Food.prototype.lv = 0;
    
        /**
         * Food foodMax.
         * @member {number} foodMax
         * @memberof Food
         * @instance
         */
        Food.prototype.foodMax = 0;
    
        /**
         * Food attCost.
         * @member {number} attCost
         * @memberof Food
         * @instance
         */
        Food.prototype.attCost = 0;
    
        /**
         * Decodes a Food message from the specified reader or buffer.
         * @function decode
         * @memberof Food
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Food} Food
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Food.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Food();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.lv = reader.int32();
                    break;
                case 3:
                    message.foodMax = reader.int32();
                    break;
                case 4:
                    message.attCost = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Food;
    })();
    
    $root.ForceReport = (function() {
    
        /**
         * Properties of a ForceReport.
         * @exports IForceReport
         * @interface IForceReport
         * @property {number|null} [id] ForceReport id
         * @property {number|null} [num] ForceReport num
         * @property {string|null} [intro] ForceReport intro
         */
    
        /**
         * Constructs a new ForceReport.
         * @exports ForceReport
         * @classdesc Represents a ForceReport.
         * @implements IForceReport
         * @constructor
         * @param {IForceReport=} [properties] Properties to set
         */
        function ForceReport(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * ForceReport id.
         * @member {number} id
         * @memberof ForceReport
         * @instance
         */
        ForceReport.prototype.id = 0;
    
        /**
         * ForceReport num.
         * @member {number} num
         * @memberof ForceReport
         * @instance
         */
        ForceReport.prototype.num = 0;
    
        /**
         * ForceReport intro.
         * @member {string} intro
         * @memberof ForceReport
         * @instance
         */
        ForceReport.prototype.intro = "";
    
        /**
         * Decodes a ForceReport message from the specified reader or buffer.
         * @function decode
         * @memberof ForceReport
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {ForceReport} ForceReport
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ForceReport.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ForceReport();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.num = reader.int32();
                    break;
                case 3:
                    message.intro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return ForceReport;
    })();
    
    $root.Gov = (function() {
    
        /**
         * Properties of a Gov.
         * @exports IGov
         * @interface IGov
         * @property {number|null} [id] Gov id
         * @property {string|null} [name] Gov name
         * @property {number|null} [weight] Gov weight
         * @property {string|null} [cost] Gov cost
         * @property {string|null} [reward] Gov reward
         */
    
        /**
         * Constructs a new Gov.
         * @exports Gov
         * @classdesc Represents a Gov.
         * @implements IGov
         * @constructor
         * @param {IGov=} [properties] Properties to set
         */
        function Gov(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Gov id.
         * @member {number} id
         * @memberof Gov
         * @instance
         */
        Gov.prototype.id = 0;
    
        /**
         * Gov name.
         * @member {string} name
         * @memberof Gov
         * @instance
         */
        Gov.prototype.name = "";
    
        /**
         * Gov weight.
         * @member {number} weight
         * @memberof Gov
         * @instance
         */
        Gov.prototype.weight = 0;
    
        /**
         * Gov cost.
         * @member {string} cost
         * @memberof Gov
         * @instance
         */
        Gov.prototype.cost = "";
    
        /**
         * Gov reward.
         * @member {string} reward
         * @memberof Gov
         * @instance
         */
        Gov.prototype.reward = "";
    
        /**
         * Decodes a Gov message from the specified reader or buffer.
         * @function decode
         * @memberof Gov
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Gov} Gov
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Gov.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Gov();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.weight = reader.int32();
                    break;
                case 4:
                    message.cost = reader.string();
                    break;
                case 5:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Gov;
    })();
    
    $root.Grade = (function() {
    
        /**
         * Properties of a Grade.
         * @exports IGrade
         * @interface IGrade
         * @property {number|null} [id] Grade id
         * @property {number|null} [lv] Grade lv
         * @property {string|null} [name] Grade name
         * @property {string|null} [intro] Grade intro
         * @property {number|null} [initArmy] Grade initArmy
         * @property {number|null} [defArmy] Grade defArmy
         * @property {number|null} [woodRatio] Grade woodRatio
         * @property {string|null} [effectDanNum] Grade effectDanNum
         * @property {string|null} [extraDrop] Grade extraDrop
         */
    
        /**
         * Constructs a new Grade.
         * @exports Grade
         * @classdesc Represents a Grade.
         * @implements IGrade
         * @constructor
         * @param {IGrade=} [properties] Properties to set
         */
        function Grade(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Grade id.
         * @member {number} id
         * @memberof Grade
         * @instance
         */
        Grade.prototype.id = 0;
    
        /**
         * Grade lv.
         * @member {number} lv
         * @memberof Grade
         * @instance
         */
        Grade.prototype.lv = 0;
    
        /**
         * Grade name.
         * @member {string} name
         * @memberof Grade
         * @instance
         */
        Grade.prototype.name = "";
    
        /**
         * Grade intro.
         * @member {string} intro
         * @memberof Grade
         * @instance
         */
        Grade.prototype.intro = "";
    
        /**
         * Grade initArmy.
         * @member {number} initArmy
         * @memberof Grade
         * @instance
         */
        Grade.prototype.initArmy = 0;
    
        /**
         * Grade defArmy.
         * @member {number} defArmy
         * @memberof Grade
         * @instance
         */
        Grade.prototype.defArmy = 0;
    
        /**
         * Grade woodRatio.
         * @member {number} woodRatio
         * @memberof Grade
         * @instance
         */
        Grade.prototype.woodRatio = 0;
    
        /**
         * Grade effectDanNum.
         * @member {string} effectDanNum
         * @memberof Grade
         * @instance
         */
        Grade.prototype.effectDanNum = "";
    
        /**
         * Grade extraDrop.
         * @member {string} extraDrop
         * @memberof Grade
         * @instance
         */
        Grade.prototype.extraDrop = "";
    
        /**
         * Decodes a Grade message from the specified reader or buffer.
         * @function decode
         * @memberof Grade
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Grade} Grade
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Grade.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Grade();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.lv = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.intro = reader.string();
                    break;
                case 5:
                    message.initArmy = reader.int32();
                    break;
                case 6:
                    message.defArmy = reader.int32();
                    break;
                case 7:
                    message.woodRatio = reader.int32();
                    break;
                case 8:
                    message.effectDanNum = reader.string();
                    break;
                case 9:
                    message.extraDrop = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Grade;
    })();
    
    $root.Hammer = (function() {
    
        /**
         * Properties of a Hammer.
         * @exports IHammer
         * @interface IHammer
         * @property {number|null} [id] Hammer id
         * @property {number|null} [type] Hammer type
         * @property {number|null} [lv] Hammer lv
         * @property {string|null} [cost] Hammer cost
         * @property {string|null} [reward] Hammer reward
         * @property {string|null} [openReward] Hammer openReward
         */
    
        /**
         * Constructs a new Hammer.
         * @exports Hammer
         * @classdesc Represents a Hammer.
         * @implements IHammer
         * @constructor
         * @param {IHammer=} [properties] Properties to set
         */
        function Hammer(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Hammer id.
         * @member {number} id
         * @memberof Hammer
         * @instance
         */
        Hammer.prototype.id = 0;
    
        /**
         * Hammer type.
         * @member {number} type
         * @memberof Hammer
         * @instance
         */
        Hammer.prototype.type = 0;
    
        /**
         * Hammer lv.
         * @member {number} lv
         * @memberof Hammer
         * @instance
         */
        Hammer.prototype.lv = 0;
    
        /**
         * Hammer cost.
         * @member {string} cost
         * @memberof Hammer
         * @instance
         */
        Hammer.prototype.cost = "";
    
        /**
         * Hammer reward.
         * @member {string} reward
         * @memberof Hammer
         * @instance
         */
        Hammer.prototype.reward = "";
    
        /**
         * Hammer openReward.
         * @member {string} openReward
         * @memberof Hammer
         * @instance
         */
        Hammer.prototype.openReward = "";
    
        /**
         * Decodes a Hammer message from the specified reader or buffer.
         * @function decode
         * @memberof Hammer
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Hammer} Hammer
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Hammer.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Hammer();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.lv = reader.int32();
                    break;
                case 4:
                    message.cost = reader.string();
                    break;
                case 5:
                    message.reward = reader.string();
                    break;
                case 6:
                    message.openReward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Hammer;
    })();
    
    $root.HappyCircle = (function() {
    
        /**
         * Properties of a HappyCircle.
         * @exports IHappyCircle
         * @interface IHappyCircle
         * @property {number|null} [id] HappyCircle id
         * @property {string|null} [happyReward] HappyCircle happyReward
         * @property {number|null} [happyRate] HappyCircle happyRate
         */
    
        /**
         * Constructs a new HappyCircle.
         * @exports HappyCircle
         * @classdesc Represents a HappyCircle.
         * @implements IHappyCircle
         * @constructor
         * @param {IHappyCircle=} [properties] Properties to set
         */
        function HappyCircle(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HappyCircle id.
         * @member {number} id
         * @memberof HappyCircle
         * @instance
         */
        HappyCircle.prototype.id = 0;
    
        /**
         * HappyCircle happyReward.
         * @member {string} happyReward
         * @memberof HappyCircle
         * @instance
         */
        HappyCircle.prototype.happyReward = "";
    
        /**
         * HappyCircle happyRate.
         * @member {number} happyRate
         * @memberof HappyCircle
         * @instance
         */
        HappyCircle.prototype.happyRate = 0;
    
        /**
         * Decodes a HappyCircle message from the specified reader or buffer.
         * @function decode
         * @memberof HappyCircle
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HappyCircle} HappyCircle
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HappyCircle.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HappyCircle();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.happyReward = reader.string();
                    break;
                case 3:
                    message.happyRate = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HappyCircle;
    })();
    
    $root.HeroBreakthrough = (function() {
    
        /**
         * Properties of a HeroBreakthrough.
         * @exports IHeroBreakthrough
         * @interface IHeroBreakthrough
         * @property {number|null} [id] HeroBreakthrough id
         * @property {number|null} [lv] HeroBreakthrough lv
         * @property {number|null} [cost] HeroBreakthrough cost
         * @property {number|null} [maxAp] HeroBreakthrough maxAp
         * @property {number|null} [maxHp] HeroBreakthrough maxHp
         * @property {number|null} [maxCrit] HeroBreakthrough maxCrit
         * @property {number|null} [maxResist] HeroBreakthrough maxResist
         * @property {number|null} [maxHit] HeroBreakthrough maxHit
         * @property {number|null} [maxDodge] HeroBreakthrough maxDodge
         */
    
        /**
         * Constructs a new HeroBreakthrough.
         * @exports HeroBreakthrough
         * @classdesc Represents a HeroBreakthrough.
         * @implements IHeroBreakthrough
         * @constructor
         * @param {IHeroBreakthrough=} [properties] Properties to set
         */
        function HeroBreakthrough(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroBreakthrough id.
         * @member {number} id
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.id = 0;
    
        /**
         * HeroBreakthrough lv.
         * @member {number} lv
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.lv = 0;
    
        /**
         * HeroBreakthrough cost.
         * @member {number} cost
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.cost = 0;
    
        /**
         * HeroBreakthrough maxAp.
         * @member {number} maxAp
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.maxAp = 0;
    
        /**
         * HeroBreakthrough maxHp.
         * @member {number} maxHp
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.maxHp = 0;
    
        /**
         * HeroBreakthrough maxCrit.
         * @member {number} maxCrit
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.maxCrit = 0;
    
        /**
         * HeroBreakthrough maxResist.
         * @member {number} maxResist
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.maxResist = 0;
    
        /**
         * HeroBreakthrough maxHit.
         * @member {number} maxHit
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.maxHit = 0;
    
        /**
         * HeroBreakthrough maxDodge.
         * @member {number} maxDodge
         * @memberof HeroBreakthrough
         * @instance
         */
        HeroBreakthrough.prototype.maxDodge = 0;
    
        /**
         * Decodes a HeroBreakthrough message from the specified reader or buffer.
         * @function decode
         * @memberof HeroBreakthrough
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroBreakthrough} HeroBreakthrough
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroBreakthrough.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroBreakthrough();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.lv = reader.int32();
                    break;
                case 3:
                    message.cost = reader.int32();
                    break;
                case 4:
                    message.maxAp = reader.int32();
                    break;
                case 5:
                    message.maxHp = reader.int32();
                    break;
                case 6:
                    message.maxCrit = reader.int32();
                    break;
                case 7:
                    message.maxResist = reader.int32();
                    break;
                case 8:
                    message.maxHit = reader.int32();
                    break;
                case 9:
                    message.maxDodge = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroBreakthrough;
    })();
    
    $root.HeroEffectInfo = (function() {
    
        /**
         * Properties of a HeroEffectInfo.
         * @exports IHeroEffectInfo
         * @interface IHeroEffectInfo
         * @property {number|null} [id] HeroEffectInfo id
         * @property {string|null} [name] HeroEffectInfo name
         * @property {number|null} [effectId] HeroEffectInfo effectId
         * @property {number|null} [effectLv] HeroEffectInfo effectLv
         * @property {string|null} [limit] HeroEffectInfo limit
         * @property {number|null} [cost] HeroEffectInfo cost
         * @property {string|null} [intro] HeroEffectInfo intro
         * @property {string|null} [attr] HeroEffectInfo attr
         * @property {string|null} [effectStr] HeroEffectInfo effectStr
         */
    
        /**
         * Constructs a new HeroEffectInfo.
         * @exports HeroEffectInfo
         * @classdesc Represents a HeroEffectInfo.
         * @implements IHeroEffectInfo
         * @constructor
         * @param {IHeroEffectInfo=} [properties] Properties to set
         */
        function HeroEffectInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroEffectInfo id.
         * @member {number} id
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.id = 0;
    
        /**
         * HeroEffectInfo name.
         * @member {string} name
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.name = "";
    
        /**
         * HeroEffectInfo effectId.
         * @member {number} effectId
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.effectId = 0;
    
        /**
         * HeroEffectInfo effectLv.
         * @member {number} effectLv
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.effectLv = 0;
    
        /**
         * HeroEffectInfo limit.
         * @member {string} limit
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.limit = "";
    
        /**
         * HeroEffectInfo cost.
         * @member {number} cost
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.cost = 0;
    
        /**
         * HeroEffectInfo intro.
         * @member {string} intro
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.intro = "";
    
        /**
         * HeroEffectInfo attr.
         * @member {string} attr
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.attr = "";
    
        /**
         * HeroEffectInfo effectStr.
         * @member {string} effectStr
         * @memberof HeroEffectInfo
         * @instance
         */
        HeroEffectInfo.prototype.effectStr = "";
    
        /**
         * Decodes a HeroEffectInfo message from the specified reader or buffer.
         * @function decode
         * @memberof HeroEffectInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroEffectInfo} HeroEffectInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroEffectInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroEffectInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.effectId = reader.int32();
                    break;
                case 4:
                    message.effectLv = reader.int32();
                    break;
                case 5:
                    message.limit = reader.string();
                    break;
                case 6:
                    message.cost = reader.int32();
                    break;
                case 7:
                    message.intro = reader.string();
                    break;
                case 8:
                    message.attr = reader.string();
                    break;
                case 9:
                    message.effectStr = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroEffectInfo;
    })();
    
    $root.HeroEffectInfoClient = (function() {
    
        /**
         * Properties of a HeroEffectInfoClient.
         * @exports IHeroEffectInfoClient
         * @interface IHeroEffectInfoClient
         * @property {number|null} [id] HeroEffectInfoClient id
         * @property {string|null} [name] HeroEffectInfoClient name
         */
    
        /**
         * Constructs a new HeroEffectInfoClient.
         * @exports HeroEffectInfoClient
         * @classdesc Represents a HeroEffectInfoClient.
         * @implements IHeroEffectInfoClient
         * @constructor
         * @param {IHeroEffectInfoClient=} [properties] Properties to set
         */
        function HeroEffectInfoClient(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroEffectInfoClient id.
         * @member {number} id
         * @memberof HeroEffectInfoClient
         * @instance
         */
        HeroEffectInfoClient.prototype.id = 0;
    
        /**
         * HeroEffectInfoClient name.
         * @member {string} name
         * @memberof HeroEffectInfoClient
         * @instance
         */
        HeroEffectInfoClient.prototype.name = "";
    
        /**
         * Decodes a HeroEffectInfoClient message from the specified reader or buffer.
         * @function decode
         * @memberof HeroEffectInfoClient
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroEffectInfoClient} HeroEffectInfoClient
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroEffectInfoClient.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroEffectInfoClient();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroEffectInfoClient;
    })();
    
    $root.HeroEquip = (function() {
    
        /**
         * Properties of a HeroEquip.
         * @exports IHeroEquip
         * @interface IHeroEquip
         * @property {number|null} [id] HeroEquip id
         * @property {number|null} [generalType] HeroEquip generalType
         * @property {number|null} [quality] HeroEquip quality
         * @property {number|null} [index] HeroEquip index
         * @property {number|null} [maxLv] HeroEquip maxLv
         * @property {number|null} [equip1] HeroEquip equip1
         * @property {number|null} [equip2] HeroEquip equip2
         * @property {number|null} [equip3] HeroEquip equip3
         * @property {number|null} [equip4] HeroEquip equip4
         * @property {string|null} [effect] HeroEquip effect
         * @property {number|null} [cost] HeroEquip cost
         */
    
        /**
         * Constructs a new HeroEquip.
         * @exports HeroEquip
         * @classdesc Represents a HeroEquip.
         * @implements IHeroEquip
         * @constructor
         * @param {IHeroEquip=} [properties] Properties to set
         */
        function HeroEquip(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroEquip id.
         * @member {number} id
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.id = 0;
    
        /**
         * HeroEquip generalType.
         * @member {number} generalType
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.generalType = 0;
    
        /**
         * HeroEquip quality.
         * @member {number} quality
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.quality = 0;
    
        /**
         * HeroEquip index.
         * @member {number} index
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.index = 0;
    
        /**
         * HeroEquip maxLv.
         * @member {number} maxLv
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.maxLv = 0;
    
        /**
         * HeroEquip equip1.
         * @member {number} equip1
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.equip1 = 0;
    
        /**
         * HeroEquip equip2.
         * @member {number} equip2
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.equip2 = 0;
    
        /**
         * HeroEquip equip3.
         * @member {number} equip3
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.equip3 = 0;
    
        /**
         * HeroEquip equip4.
         * @member {number} equip4
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.equip4 = 0;
    
        /**
         * HeroEquip effect.
         * @member {string} effect
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.effect = "";
    
        /**
         * HeroEquip cost.
         * @member {number} cost
         * @memberof HeroEquip
         * @instance
         */
        HeroEquip.prototype.cost = 0;
    
        /**
         * Decodes a HeroEquip message from the specified reader or buffer.
         * @function decode
         * @memberof HeroEquip
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroEquip} HeroEquip
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroEquip.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroEquip();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.generalType = reader.int32();
                    break;
                case 3:
                    message.quality = reader.int32();
                    break;
                case 4:
                    message.index = reader.int32();
                    break;
                case 5:
                    message.maxLv = reader.int32();
                    break;
                case 6:
                    message.equip1 = reader.int32();
                    break;
                case 7:
                    message.equip2 = reader.int32();
                    break;
                case 8:
                    message.equip3 = reader.int32();
                    break;
                case 9:
                    message.equip4 = reader.int32();
                    break;
                case 10:
                    message.effect = reader.string();
                    break;
                case 11:
                    message.cost = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroEquip;
    })();
    
    $root.HeroInfo = (function() {
    
        /**
         * Properties of a HeroInfo.
         * @exports IHeroInfo
         * @interface IHeroInfo
         * @property {number|null} [id] HeroInfo id
         * @property {string|null} [name] HeroInfo name
         * @property {number|null} [type] HeroInfo type
         * @property {number|null} [effectId] HeroInfo effectId
         * @property {number|null} [quality] HeroInfo quality
         * @property {number|null} [effectLv] HeroInfo effectLv
         * @property {string|null} [waitText] HeroInfo waitText
         * @property {string|null} [fightText] HeroInfo fightText
         * @property {string|null} [dieText] HeroInfo dieText
         * @property {number|null} [scale] HeroInfo scale
         * @property {string|null} [talent] HeroInfo talent
         * @property {number|null} [linkSkill] HeroInfo linkSkill
         * @property {number|null} [jobSkill] HeroInfo jobSkill
         * @property {number|null} [inLuckyBag] HeroInfo inLuckyBag
         * @property {number|null} [inHerosplitexchange] HeroInfo inHerosplitexchange
         * @property {number|null} [job] HeroInfo job
         * @property {string|null} [position] HeroInfo position
         */
    
        /**
         * Constructs a new HeroInfo.
         * @exports HeroInfo
         * @classdesc Represents a HeroInfo.
         * @implements IHeroInfo
         * @constructor
         * @param {IHeroInfo=} [properties] Properties to set
         */
        function HeroInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroInfo id.
         * @member {number} id
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.id = 0;
    
        /**
         * HeroInfo name.
         * @member {string} name
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.name = "";
    
        /**
         * HeroInfo type.
         * @member {number} type
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.type = 0;
    
        /**
         * HeroInfo effectId.
         * @member {number} effectId
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.effectId = 0;
    
        /**
         * HeroInfo quality.
         * @member {number} quality
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.quality = 0;
    
        /**
         * HeroInfo effectLv.
         * @member {number} effectLv
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.effectLv = 0;
    
        /**
         * HeroInfo waitText.
         * @member {string} waitText
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.waitText = "";
    
        /**
         * HeroInfo fightText.
         * @member {string} fightText
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.fightText = "";
    
        /**
         * HeroInfo dieText.
         * @member {string} dieText
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.dieText = "";
    
        /**
         * HeroInfo scale.
         * @member {number} scale
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.scale = 0;
    
        /**
         * HeroInfo talent.
         * @member {string} talent
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.talent = "";
    
        /**
         * HeroInfo linkSkill.
         * @member {number} linkSkill
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.linkSkill = 0;
    
        /**
         * HeroInfo jobSkill.
         * @member {number} jobSkill
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.jobSkill = 0;
    
        /**
         * HeroInfo inLuckyBag.
         * @member {number} inLuckyBag
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.inLuckyBag = 0;
    
        /**
         * HeroInfo inHerosplitexchange.
         * @member {number} inHerosplitexchange
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.inHerosplitexchange = 0;
    
        /**
         * HeroInfo job.
         * @member {number} job
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.job = 0;
    
        /**
         * HeroInfo position.
         * @member {string} position
         * @memberof HeroInfo
         * @instance
         */
        HeroInfo.prototype.position = "";
    
        /**
         * Decodes a HeroInfo message from the specified reader or buffer.
         * @function decode
         * @memberof HeroInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroInfo} HeroInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.type = reader.int32();
                    break;
                case 4:
                    message.effectId = reader.int32();
                    break;
                case 5:
                    message.quality = reader.int32();
                    break;
                case 6:
                    message.effectLv = reader.int32();
                    break;
                case 7:
                    message.waitText = reader.string();
                    break;
                case 8:
                    message.fightText = reader.string();
                    break;
                case 9:
                    message.dieText = reader.string();
                    break;
                case 10:
                    message.scale = reader.int32();
                    break;
                case 11:
                    message.talent = reader.string();
                    break;
                case 12:
                    message.linkSkill = reader.int32();
                    break;
                case 13:
                    message.jobSkill = reader.int32();
                    break;
                case 14:
                    message.inLuckyBag = reader.int32();
                    break;
                case 15:
                    message.inHerosplitexchange = reader.int32();
                    break;
                case 16:
                    message.job = reader.int32();
                    break;
                case 17:
                    message.position = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroInfo;
    })();
    
    $root.HeroLvUpInfo = (function() {
    
        /**
         * Properties of a HeroLvUpInfo.
         * @exports IHeroLvUpInfo
         * @interface IHeroLvUpInfo
         * @property {number|null} [id] HeroLvUpInfo id
         * @property {number|null} [heroId] HeroLvUpInfo heroId
         * @property {string|null} [heroName] HeroLvUpInfo heroName
         * @property {number|null} [heroLv] HeroLvUpInfo heroLv
         * @property {string|null} [limit] HeroLvUpInfo limit
         * @property {number|null} [cost] HeroLvUpInfo cost
         * @property {string|null} [attr] HeroLvUpInfo attr
         * @property {string|null} [upgradeLv1] HeroLvUpInfo upgradeLv1
         * @property {string|null} [upgradeLv2] HeroLvUpInfo upgradeLv2
         * @property {string|null} [upgradeLv3] HeroLvUpInfo upgradeLv3
         * @property {string|null} [upgradeLv4] HeroLvUpInfo upgradeLv4
         * @property {string|null} [upgradeLv5] HeroLvUpInfo upgradeLv5
         */
    
        /**
         * Constructs a new HeroLvUpInfo.
         * @exports HeroLvUpInfo
         * @classdesc Represents a HeroLvUpInfo.
         * @implements IHeroLvUpInfo
         * @constructor
         * @param {IHeroLvUpInfo=} [properties] Properties to set
         */
        function HeroLvUpInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroLvUpInfo id.
         * @member {number} id
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.id = 0;
    
        /**
         * HeroLvUpInfo heroId.
         * @member {number} heroId
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.heroId = 0;
    
        /**
         * HeroLvUpInfo heroName.
         * @member {string} heroName
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.heroName = "";
    
        /**
         * HeroLvUpInfo heroLv.
         * @member {number} heroLv
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.heroLv = 0;
    
        /**
         * HeroLvUpInfo limit.
         * @member {string} limit
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.limit = "";
    
        /**
         * HeroLvUpInfo cost.
         * @member {number} cost
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.cost = 0;
    
        /**
         * HeroLvUpInfo attr.
         * @member {string} attr
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.attr = "";
    
        /**
         * HeroLvUpInfo upgradeLv1.
         * @member {string} upgradeLv1
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.upgradeLv1 = "";
    
        /**
         * HeroLvUpInfo upgradeLv2.
         * @member {string} upgradeLv2
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.upgradeLv2 = "";
    
        /**
         * HeroLvUpInfo upgradeLv3.
         * @member {string} upgradeLv3
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.upgradeLv3 = "";
    
        /**
         * HeroLvUpInfo upgradeLv4.
         * @member {string} upgradeLv4
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.upgradeLv4 = "";
    
        /**
         * HeroLvUpInfo upgradeLv5.
         * @member {string} upgradeLv5
         * @memberof HeroLvUpInfo
         * @instance
         */
        HeroLvUpInfo.prototype.upgradeLv5 = "";
    
        /**
         * Decodes a HeroLvUpInfo message from the specified reader or buffer.
         * @function decode
         * @memberof HeroLvUpInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroLvUpInfo} HeroLvUpInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroLvUpInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroLvUpInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.heroId = reader.int32();
                    break;
                case 3:
                    message.heroName = reader.string();
                    break;
                case 4:
                    message.heroLv = reader.int32();
                    break;
                case 5:
                    message.limit = reader.string();
                    break;
                case 6:
                    message.cost = reader.int32();
                    break;
                case 7:
                    message.attr = reader.string();
                    break;
                case 8:
                    message.upgradeLv1 = reader.string();
                    break;
                case 9:
                    message.upgradeLv2 = reader.string();
                    break;
                case 10:
                    message.upgradeLv3 = reader.string();
                    break;
                case 11:
                    message.upgradeLv4 = reader.string();
                    break;
                case 12:
                    message.upgradeLv5 = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroLvUpInfo;
    })();
    
    $root.HeroSkeletonClient = (function() {
    
        /**
         * Properties of a HeroSkeletonClient.
         * @exports IHeroSkeletonClient
         * @interface IHeroSkeletonClient
         * @property {number|null} [id] HeroSkeletonClient id
         * @property {number|null} [heroType] HeroSkeletonClient heroType
         * @property {number|null} [heroId] HeroSkeletonClient heroId
         * @property {string|null} [name] HeroSkeletonClient name
         * @property {string|null} [skeleton] HeroSkeletonClient skeleton
         * @property {string|null} [armature] HeroSkeletonClient armature
         * @property {string|null} [replaceArmature] HeroSkeletonClient replaceArmature
         * @property {number|null} [withReleaseAction] HeroSkeletonClient withReleaseAction
         * @property {string|null} [iconUrl] HeroSkeletonClient iconUrl
         * @property {string|null} [atkSound] HeroSkeletonClient atkSound
         */
    
        /**
         * Constructs a new HeroSkeletonClient.
         * @exports HeroSkeletonClient
         * @classdesc Represents a HeroSkeletonClient.
         * @implements IHeroSkeletonClient
         * @constructor
         * @param {IHeroSkeletonClient=} [properties] Properties to set
         */
        function HeroSkeletonClient(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroSkeletonClient id.
         * @member {number} id
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.id = 0;
    
        /**
         * HeroSkeletonClient heroType.
         * @member {number} heroType
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.heroType = 0;
    
        /**
         * HeroSkeletonClient heroId.
         * @member {number} heroId
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.heroId = 0;
    
        /**
         * HeroSkeletonClient name.
         * @member {string} name
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.name = "";
    
        /**
         * HeroSkeletonClient skeleton.
         * @member {string} skeleton
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.skeleton = "";
    
        /**
         * HeroSkeletonClient armature.
         * @member {string} armature
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.armature = "";
    
        /**
         * HeroSkeletonClient replaceArmature.
         * @member {string} replaceArmature
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.replaceArmature = "";
    
        /**
         * HeroSkeletonClient withReleaseAction.
         * @member {number} withReleaseAction
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.withReleaseAction = 0;
    
        /**
         * HeroSkeletonClient iconUrl.
         * @member {string} iconUrl
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.iconUrl = "";
    
        /**
         * HeroSkeletonClient atkSound.
         * @member {string} atkSound
         * @memberof HeroSkeletonClient
         * @instance
         */
        HeroSkeletonClient.prototype.atkSound = "";
    
        /**
         * Decodes a HeroSkeletonClient message from the specified reader or buffer.
         * @function decode
         * @memberof HeroSkeletonClient
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroSkeletonClient} HeroSkeletonClient
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroSkeletonClient.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroSkeletonClient();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.heroType = reader.int32();
                    break;
                case 3:
                    message.heroId = reader.int32();
                    break;
                case 4:
                    message.name = reader.string();
                    break;
                case 5:
                    message.skeleton = reader.string();
                    break;
                case 6:
                    message.armature = reader.string();
                    break;
                case 7:
                    message.replaceArmature = reader.string();
                    break;
                case 8:
                    message.withReleaseAction = reader.int32();
                    break;
                case 9:
                    message.iconUrl = reader.string();
                    break;
                case 10:
                    message.atkSound = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroSkeletonClient;
    })();
    
    $root.HeroUpgrade = (function() {
    
        /**
         * Properties of a HeroUpgrade.
         * @exports IHeroUpgrade
         * @interface IHeroUpgrade
         * @property {number|null} [id] HeroUpgrade id
         * @property {number|null} [type] HeroUpgrade type
         * @property {number|null} [quality] HeroUpgrade quality
         * @property {number|null} [upgradeLv] HeroUpgrade upgradeLv
         * @property {number|null} [cost] HeroUpgrade cost
         */
    
        /**
         * Constructs a new HeroUpgrade.
         * @exports HeroUpgrade
         * @classdesc Represents a HeroUpgrade.
         * @implements IHeroUpgrade
         * @constructor
         * @param {IHeroUpgrade=} [properties] Properties to set
         */
        function HeroUpgrade(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * HeroUpgrade id.
         * @member {number} id
         * @memberof HeroUpgrade
         * @instance
         */
        HeroUpgrade.prototype.id = 0;
    
        /**
         * HeroUpgrade type.
         * @member {number} type
         * @memberof HeroUpgrade
         * @instance
         */
        HeroUpgrade.prototype.type = 0;
    
        /**
         * HeroUpgrade quality.
         * @member {number} quality
         * @memberof HeroUpgrade
         * @instance
         */
        HeroUpgrade.prototype.quality = 0;
    
        /**
         * HeroUpgrade upgradeLv.
         * @member {number} upgradeLv
         * @memberof HeroUpgrade
         * @instance
         */
        HeroUpgrade.prototype.upgradeLv = 0;
    
        /**
         * HeroUpgrade cost.
         * @member {number} cost
         * @memberof HeroUpgrade
         * @instance
         */
        HeroUpgrade.prototype.cost = 0;
    
        /**
         * Decodes a HeroUpgrade message from the specified reader or buffer.
         * @function decode
         * @memberof HeroUpgrade
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {HeroUpgrade} HeroUpgrade
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        HeroUpgrade.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HeroUpgrade();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.quality = reader.int32();
                    break;
                case 4:
                    message.upgradeLv = reader.int32();
                    break;
                case 5:
                    message.cost = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return HeroUpgrade;
    })();
    
    $root.InitResource = (function() {
    
        /**
         * Properties of an InitResource.
         * @exports IInitResource
         * @interface IInitResource
         * @property {number|null} [id] InitResource id
         * @property {number|null} [num] InitResource num
         * @property {number|null} [maxNum] InitResource maxNum
         * @property {number|null} [addPerSecond] InitResource addPerSecond
         */
    
        /**
         * Constructs a new InitResource.
         * @exports InitResource
         * @classdesc Represents an InitResource.
         * @implements IInitResource
         * @constructor
         * @param {IInitResource=} [properties] Properties to set
         */
        function InitResource(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * InitResource id.
         * @member {number} id
         * @memberof InitResource
         * @instance
         */
        InitResource.prototype.id = 0;
    
        /**
         * InitResource num.
         * @member {number} num
         * @memberof InitResource
         * @instance
         */
        InitResource.prototype.num = 0;
    
        /**
         * InitResource maxNum.
         * @member {number} maxNum
         * @memberof InitResource
         * @instance
         */
        InitResource.prototype.maxNum = 0;
    
        /**
         * InitResource addPerSecond.
         * @member {number} addPerSecond
         * @memberof InitResource
         * @instance
         */
        InitResource.prototype.addPerSecond = 0;
    
        /**
         * Decodes an InitResource message from the specified reader or buffer.
         * @function decode
         * @memberof InitResource
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {InitResource} InitResource
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        InitResource.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.InitResource();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.num = reader.int32();
                    break;
                case 3:
                    message.maxNum = reader.int32();
                    break;
                case 4:
                    message.addPerSecond = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return InitResource;
    })();
    
    $root.Intimacy = (function() {
    
        /**
         * Properties of an Intimacy.
         * @exports IIntimacy
         * @interface IIntimacy
         * @property {number|null} [id] Intimacy id
         * @property {number|null} [num] Intimacy num
         * @property {number|null} [teamExpRatio] Intimacy teamExpRatio
         * @property {number|null} [visitExpRatio] Intimacy visitExpRatio
         */
    
        /**
         * Constructs a new Intimacy.
         * @exports Intimacy
         * @classdesc Represents an Intimacy.
         * @implements IIntimacy
         * @constructor
         * @param {IIntimacy=} [properties] Properties to set
         */
        function Intimacy(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Intimacy id.
         * @member {number} id
         * @memberof Intimacy
         * @instance
         */
        Intimacy.prototype.id = 0;
    
        /**
         * Intimacy num.
         * @member {number} num
         * @memberof Intimacy
         * @instance
         */
        Intimacy.prototype.num = 0;
    
        /**
         * Intimacy teamExpRatio.
         * @member {number} teamExpRatio
         * @memberof Intimacy
         * @instance
         */
        Intimacy.prototype.teamExpRatio = 0;
    
        /**
         * Intimacy visitExpRatio.
         * @member {number} visitExpRatio
         * @memberof Intimacy
         * @instance
         */
        Intimacy.prototype.visitExpRatio = 0;
    
        /**
         * Decodes an Intimacy message from the specified reader or buffer.
         * @function decode
         * @memberof Intimacy
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Intimacy} Intimacy
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Intimacy.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Intimacy();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.num = reader.int32();
                    break;
                case 3:
                    message.teamExpRatio = reader.int32();
                    break;
                case 4:
                    message.visitExpRatio = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Intimacy;
    })();
    
    $root.ItemInfo = (function() {
    
        /**
         * Properties of an ItemInfo.
         * @exports IItemInfo
         * @interface IItemInfo
         * @property {number|null} [id] ItemInfo id
         * @property {number|null} [itemType] ItemInfo itemType
         * @property {string|null} [itemTypeDesc] ItemInfo itemTypeDesc
         * @property {number|null} [itemId] ItemInfo itemId
         * @property {string|null} [itemName] ItemInfo itemName
         * @property {string|null} [resourceId] ItemInfo resourceId
         * @property {number|null} [inBag] ItemInfo inBag
         * @property {number|null} [canUse] ItemInfo canUse
         * @property {number|null} [showWeight] ItemInfo showWeight
         * @property {string|null} [drop] ItemInfo drop
         * @property {string|null} [classify] ItemInfo classify
         * @property {string|null} [desc] ItemInfo desc
         * @property {number|null} [useOnceCost] ItemInfo useOnceCost
         */
    
        /**
         * Constructs a new ItemInfo.
         * @exports ItemInfo
         * @classdesc Represents an ItemInfo.
         * @implements IItemInfo
         * @constructor
         * @param {IItemInfo=} [properties] Properties to set
         */
        function ItemInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * ItemInfo id.
         * @member {number} id
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.id = 0;
    
        /**
         * ItemInfo itemType.
         * @member {number} itemType
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.itemType = 0;
    
        /**
         * ItemInfo itemTypeDesc.
         * @member {string} itemTypeDesc
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.itemTypeDesc = "";
    
        /**
         * ItemInfo itemId.
         * @member {number} itemId
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.itemId = 0;
    
        /**
         * ItemInfo itemName.
         * @member {string} itemName
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.itemName = "";
    
        /**
         * ItemInfo resourceId.
         * @member {string} resourceId
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.resourceId = "";
    
        /**
         * ItemInfo inBag.
         * @member {number} inBag
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.inBag = 0;
    
        /**
         * ItemInfo canUse.
         * @member {number} canUse
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.canUse = 0;
    
        /**
         * ItemInfo showWeight.
         * @member {number} showWeight
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.showWeight = 0;
    
        /**
         * ItemInfo drop.
         * @member {string} drop
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.drop = "";
    
        /**
         * ItemInfo classify.
         * @member {string} classify
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.classify = "";
    
        /**
         * ItemInfo desc.
         * @member {string} desc
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.desc = "";
    
        /**
         * ItemInfo useOnceCost.
         * @member {number} useOnceCost
         * @memberof ItemInfo
         * @instance
         */
        ItemInfo.prototype.useOnceCost = 0;
    
        /**
         * Decodes an ItemInfo message from the specified reader or buffer.
         * @function decode
         * @memberof ItemInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {ItemInfo} ItemInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        ItemInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ItemInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.itemType = reader.int32();
                    break;
                case 3:
                    message.itemTypeDesc = reader.string();
                    break;
                case 4:
                    message.itemId = reader.int32();
                    break;
                case 5:
                    message.itemName = reader.string();
                    break;
                case 6:
                    message.resourceId = reader.string();
                    break;
                case 7:
                    message.inBag = reader.int32();
                    break;
                case 8:
                    message.canUse = reader.int32();
                    break;
                case 9:
                    message.showWeight = reader.int32();
                    break;
                case 10:
                    message.drop = reader.string();
                    break;
                case 11:
                    message.classify = reader.string();
                    break;
                case 12:
                    message.desc = reader.string();
                    break;
                case 13:
                    message.useOnceCost = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return ItemInfo;
    })();
    
    $root.KingTower = (function() {
    
        /**
         * Properties of a KingTower.
         * @exports IKingTower
         * @interface IKingTower
         * @property {number|null} [id] KingTower id
         * @property {number|null} [name] KingTower name
         * @property {string|null} [treasure] KingTower treasure
         * @property {string|null} [reward] KingTower reward
         * @property {string|null} [flagEffect] KingTower flagEffect
         * @property {string|null} [flagPic] KingTower flagPic
         * @property {number|null} [boss] KingTower boss
         */
    
        /**
         * Constructs a new KingTower.
         * @exports KingTower
         * @classdesc Represents a KingTower.
         * @implements IKingTower
         * @constructor
         * @param {IKingTower=} [properties] Properties to set
         */
        function KingTower(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * KingTower id.
         * @member {number} id
         * @memberof KingTower
         * @instance
         */
        KingTower.prototype.id = 0;
    
        /**
         * KingTower name.
         * @member {number} name
         * @memberof KingTower
         * @instance
         */
        KingTower.prototype.name = 0;
    
        /**
         * KingTower treasure.
         * @member {string} treasure
         * @memberof KingTower
         * @instance
         */
        KingTower.prototype.treasure = "";
    
        /**
         * KingTower reward.
         * @member {string} reward
         * @memberof KingTower
         * @instance
         */
        KingTower.prototype.reward = "";
    
        /**
         * KingTower flagEffect.
         * @member {string} flagEffect
         * @memberof KingTower
         * @instance
         */
        KingTower.prototype.flagEffect = "";
    
        /**
         * KingTower flagPic.
         * @member {string} flagPic
         * @memberof KingTower
         * @instance
         */
        KingTower.prototype.flagPic = "";
    
        /**
         * KingTower boss.
         * @member {number} boss
         * @memberof KingTower
         * @instance
         */
        KingTower.prototype.boss = 0;
    
        /**
         * Decodes a KingTower message from the specified reader or buffer.
         * @function decode
         * @memberof KingTower
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {KingTower} KingTower
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        KingTower.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.KingTower();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.int32();
                    break;
                case 3:
                    message.treasure = reader.string();
                    break;
                case 4:
                    message.reward = reader.string();
                    break;
                case 5:
                    message.flagEffect = reader.string();
                    break;
                case 6:
                    message.flagPic = reader.string();
                    break;
                case 7:
                    message.boss = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return KingTower;
    })();
    
    $root.KingTowerMonster = (function() {
    
        /**
         * Properties of a KingTowerMonster.
         * @exports IKingTowerMonster
         * @interface IKingTowerMonster
         * @property {number|null} [id] KingTowerMonster id
         * @property {number|null} [kingTowerId] KingTowerMonster kingTowerId
         * @property {number|null} [turnId] KingTowerMonster turnId
         * @property {number|null} [posId] KingTowerMonster posId
         * @property {number|null} [monsterId] KingTowerMonster monsterId
         * @property {number|null} [monsterLv] KingTowerMonster monsterLv
         * @property {string|null} [ai] KingTowerMonster ai
         */
    
        /**
         * Constructs a new KingTowerMonster.
         * @exports KingTowerMonster
         * @classdesc Represents a KingTowerMonster.
         * @implements IKingTowerMonster
         * @constructor
         * @param {IKingTowerMonster=} [properties] Properties to set
         */
        function KingTowerMonster(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * KingTowerMonster id.
         * @member {number} id
         * @memberof KingTowerMonster
         * @instance
         */
        KingTowerMonster.prototype.id = 0;
    
        /**
         * KingTowerMonster kingTowerId.
         * @member {number} kingTowerId
         * @memberof KingTowerMonster
         * @instance
         */
        KingTowerMonster.prototype.kingTowerId = 0;
    
        /**
         * KingTowerMonster turnId.
         * @member {number} turnId
         * @memberof KingTowerMonster
         * @instance
         */
        KingTowerMonster.prototype.turnId = 0;
    
        /**
         * KingTowerMonster posId.
         * @member {number} posId
         * @memberof KingTowerMonster
         * @instance
         */
        KingTowerMonster.prototype.posId = 0;
    
        /**
         * KingTowerMonster monsterId.
         * @member {number} monsterId
         * @memberof KingTowerMonster
         * @instance
         */
        KingTowerMonster.prototype.monsterId = 0;
    
        /**
         * KingTowerMonster monsterLv.
         * @member {number} monsterLv
         * @memberof KingTowerMonster
         * @instance
         */
        KingTowerMonster.prototype.monsterLv = 0;
    
        /**
         * KingTowerMonster ai.
         * @member {string} ai
         * @memberof KingTowerMonster
         * @instance
         */
        KingTowerMonster.prototype.ai = "";
    
        /**
         * Decodes a KingTowerMonster message from the specified reader or buffer.
         * @function decode
         * @memberof KingTowerMonster
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {KingTowerMonster} KingTowerMonster
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        KingTowerMonster.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.KingTowerMonster();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.kingTowerId = reader.int32();
                    break;
                case 3:
                    message.turnId = reader.int32();
                    break;
                case 4:
                    message.posId = reader.int32();
                    break;
                case 5:
                    message.monsterId = reader.int32();
                    break;
                case 6:
                    message.monsterLv = reader.int32();
                    break;
                case 7:
                    message.ai = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return KingTowerMonster;
    })();
    
    $root.Language = (function() {
    
        /**
         * Properties of a Language.
         * @exports ILanguage
         * @interface ILanguage
         * @property {number|null} [id] Language id
         * @property {string|null} [text] Language text
         * @property {string|null} [belong] Language belong
         */
    
        /**
         * Constructs a new Language.
         * @exports Language
         * @classdesc Represents a Language.
         * @implements ILanguage
         * @constructor
         * @param {ILanguage=} [properties] Properties to set
         */
        function Language(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Language id.
         * @member {number} id
         * @memberof Language
         * @instance
         */
        Language.prototype.id = 0;
    
        /**
         * Language text.
         * @member {string} text
         * @memberof Language
         * @instance
         */
        Language.prototype.text = "";
    
        /**
         * Language belong.
         * @member {string} belong
         * @memberof Language
         * @instance
         */
        Language.prototype.belong = "";
    
        /**
         * Decodes a Language message from the specified reader or buffer.
         * @function decode
         * @memberof Language
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Language} Language
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Language.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Language();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.text = reader.string();
                    break;
                case 3:
                    message.belong = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Language;
    })();
    
    $root.League = (function() {
    
        /**
         * Properties of a League.
         * @exports ILeague
         * @interface ILeague
         * @property {number|null} [id] League id
         * @property {string|null} [name] League name
         * @property {number|null} [memberNum] League memberNum
         * @property {number|null} [upRank] League upRank
         * @property {number|null} [downRank] League downRank
         * @property {number|null} [winReward] League winReward
         * @property {number|null} [loseReward] League loseReward
         */
    
        /**
         * Constructs a new League.
         * @exports League
         * @classdesc Represents a League.
         * @implements ILeague
         * @constructor
         * @param {ILeague=} [properties] Properties to set
         */
        function League(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * League id.
         * @member {number} id
         * @memberof League
         * @instance
         */
        League.prototype.id = 0;
    
        /**
         * League name.
         * @member {string} name
         * @memberof League
         * @instance
         */
        League.prototype.name = "";
    
        /**
         * League memberNum.
         * @member {number} memberNum
         * @memberof League
         * @instance
         */
        League.prototype.memberNum = 0;
    
        /**
         * League upRank.
         * @member {number} upRank
         * @memberof League
         * @instance
         */
        League.prototype.upRank = 0;
    
        /**
         * League downRank.
         * @member {number} downRank
         * @memberof League
         * @instance
         */
        League.prototype.downRank = 0;
    
        /**
         * League winReward.
         * @member {number} winReward
         * @memberof League
         * @instance
         */
        League.prototype.winReward = 0;
    
        /**
         * League loseReward.
         * @member {number} loseReward
         * @memberof League
         * @instance
         */
        League.prototype.loseReward = 0;
    
        /**
         * Decodes a League message from the specified reader or buffer.
         * @function decode
         * @memberof League
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {League} League
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        League.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.League();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.memberNum = reader.int32();
                    break;
                case 4:
                    message.upRank = reader.int32();
                    break;
                case 5:
                    message.downRank = reader.int32();
                    break;
                case 6:
                    message.winReward = reader.int32();
                    break;
                case 7:
                    message.loseReward = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return League;
    })();
    
    $root.LeagueRanking = (function() {
    
        /**
         * Properties of a LeagueRanking.
         * @exports ILeagueRanking
         * @interface ILeagueRanking
         * @property {number|null} [id] LeagueRanking id
         * @property {number|null} [leagueLv] LeagueRanking leagueLv
         * @property {number|null} [ranking] LeagueRanking ranking
         * @property {string|null} [reward] LeagueRanking reward
         */
    
        /**
         * Constructs a new LeagueRanking.
         * @exports LeagueRanking
         * @classdesc Represents a LeagueRanking.
         * @implements ILeagueRanking
         * @constructor
         * @param {ILeagueRanking=} [properties] Properties to set
         */
        function LeagueRanking(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * LeagueRanking id.
         * @member {number} id
         * @memberof LeagueRanking
         * @instance
         */
        LeagueRanking.prototype.id = 0;
    
        /**
         * LeagueRanking leagueLv.
         * @member {number} leagueLv
         * @memberof LeagueRanking
         * @instance
         */
        LeagueRanking.prototype.leagueLv = 0;
    
        /**
         * LeagueRanking ranking.
         * @member {number} ranking
         * @memberof LeagueRanking
         * @instance
         */
        LeagueRanking.prototype.ranking = 0;
    
        /**
         * LeagueRanking reward.
         * @member {string} reward
         * @memberof LeagueRanking
         * @instance
         */
        LeagueRanking.prototype.reward = "";
    
        /**
         * Decodes a LeagueRanking message from the specified reader or buffer.
         * @function decode
         * @memberof LeagueRanking
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {LeagueRanking} LeagueRanking
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        LeagueRanking.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.LeagueRanking();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.leagueLv = reader.int32();
                    break;
                case 3:
                    message.ranking = reader.int32();
                    break;
                case 4:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return LeagueRanking;
    })();
    
    $root.Lengend = (function() {
    
        /**
         * Properties of a Lengend.
         * @exports ILengend
         * @interface ILengend
         * @property {number|null} [id] Lengend id
         * @property {string|null} [name] Lengend name
         * @property {string|null} [members] Lengend members
         * @property {string|null} [reward] Lengend reward
         * @property {number|null} [visible] Lengend visible
         * @property {string|null} [intro] Lengend intro
         */
    
        /**
         * Constructs a new Lengend.
         * @exports Lengend
         * @classdesc Represents a Lengend.
         * @implements ILengend
         * @constructor
         * @param {ILengend=} [properties] Properties to set
         */
        function Lengend(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Lengend id.
         * @member {number} id
         * @memberof Lengend
         * @instance
         */
        Lengend.prototype.id = 0;
    
        /**
         * Lengend name.
         * @member {string} name
         * @memberof Lengend
         * @instance
         */
        Lengend.prototype.name = "";
    
        /**
         * Lengend members.
         * @member {string} members
         * @memberof Lengend
         * @instance
         */
        Lengend.prototype.members = "";
    
        /**
         * Lengend reward.
         * @member {string} reward
         * @memberof Lengend
         * @instance
         */
        Lengend.prototype.reward = "";
    
        /**
         * Lengend visible.
         * @member {number} visible
         * @memberof Lengend
         * @instance
         */
        Lengend.prototype.visible = 0;
    
        /**
         * Lengend intro.
         * @member {string} intro
         * @memberof Lengend
         * @instance
         */
        Lengend.prototype.intro = "";
    
        /**
         * Decodes a Lengend message from the specified reader or buffer.
         * @function decode
         * @memberof Lengend
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Lengend} Lengend
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Lengend.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Lengend();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.members = reader.string();
                    break;
                case 4:
                    message.reward = reader.string();
                    break;
                case 5:
                    message.visible = reader.int32();
                    break;
                case 6:
                    message.intro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Lengend;
    })();
    
    $root.LimitInfo = (function() {
    
        /**
         * Properties of a LimitInfo.
         * @exports ILimitInfo
         * @interface ILimitInfo
         * @property {number|null} [id] LimitInfo id
         * @property {string|null} [limitStr] LimitInfo limitStr
         */
    
        /**
         * Constructs a new LimitInfo.
         * @exports LimitInfo
         * @classdesc Represents a LimitInfo.
         * @implements ILimitInfo
         * @constructor
         * @param {ILimitInfo=} [properties] Properties to set
         */
        function LimitInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * LimitInfo id.
         * @member {number} id
         * @memberof LimitInfo
         * @instance
         */
        LimitInfo.prototype.id = 0;
    
        /**
         * LimitInfo limitStr.
         * @member {string} limitStr
         * @memberof LimitInfo
         * @instance
         */
        LimitInfo.prototype.limitStr = "";
    
        /**
         * Decodes a LimitInfo message from the specified reader or buffer.
         * @function decode
         * @memberof LimitInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {LimitInfo} LimitInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        LimitInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.LimitInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.limitStr = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return LimitInfo;
    })();
    
    $root.LuckyBag = (function() {
    
        /**
         * Properties of a LuckyBag.
         * @exports ILuckyBag
         * @interface ILuckyBag
         * @property {number|null} [id] LuckyBag id
         * @property {number|null} [quality] LuckyBag quality
         * @property {number|null} [collection] LuckyBag collection
         * @property {number|null} [weight] LuckyBag weight
         * @property {string|null} [loot] LuckyBag loot
         */
    
        /**
         * Constructs a new LuckyBag.
         * @exports LuckyBag
         * @classdesc Represents a LuckyBag.
         * @implements ILuckyBag
         * @constructor
         * @param {ILuckyBag=} [properties] Properties to set
         */
        function LuckyBag(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * LuckyBag id.
         * @member {number} id
         * @memberof LuckyBag
         * @instance
         */
        LuckyBag.prototype.id = 0;
    
        /**
         * LuckyBag quality.
         * @member {number} quality
         * @memberof LuckyBag
         * @instance
         */
        LuckyBag.prototype.quality = 0;
    
        /**
         * LuckyBag collection.
         * @member {number} collection
         * @memberof LuckyBag
         * @instance
         */
        LuckyBag.prototype.collection = 0;
    
        /**
         * LuckyBag weight.
         * @member {number} weight
         * @memberof LuckyBag
         * @instance
         */
        LuckyBag.prototype.weight = 0;
    
        /**
         * LuckyBag loot.
         * @member {string} loot
         * @memberof LuckyBag
         * @instance
         */
        LuckyBag.prototype.loot = "";
    
        /**
         * Decodes a LuckyBag message from the specified reader or buffer.
         * @function decode
         * @memberof LuckyBag
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {LuckyBag} LuckyBag
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        LuckyBag.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.LuckyBag();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.quality = reader.int32();
                    break;
                case 3:
                    message.collection = reader.int32();
                    break;
                case 4:
                    message.weight = reader.int32();
                    break;
                case 5:
                    message.loot = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return LuckyBag;
    })();
    
    $root.LvUp = (function() {
    
        /**
         * Properties of a LvUp.
         * @exports ILvUp
         * @interface ILvUp
         * @property {number|null} [id] LvUp id
         * @property {number|null} [playerExp] LvUp playerExp
         * @property {number|null} [maxCityLevel] LvUp maxCityLevel
         * @property {number|null} [maxHeroLevel] LvUp maxHeroLevel
         * @property {number|null} [foodLv] LvUp foodLv
         * @property {string|null} [functionOpen] LvUp functionOpen
         */
    
        /**
         * Constructs a new LvUp.
         * @exports LvUp
         * @classdesc Represents a LvUp.
         * @implements ILvUp
         * @constructor
         * @param {ILvUp=} [properties] Properties to set
         */
        function LvUp(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * LvUp id.
         * @member {number} id
         * @memberof LvUp
         * @instance
         */
        LvUp.prototype.id = 0;
    
        /**
         * LvUp playerExp.
         * @member {number} playerExp
         * @memberof LvUp
         * @instance
         */
        LvUp.prototype.playerExp = 0;
    
        /**
         * LvUp maxCityLevel.
         * @member {number} maxCityLevel
         * @memberof LvUp
         * @instance
         */
        LvUp.prototype.maxCityLevel = 0;
    
        /**
         * LvUp maxHeroLevel.
         * @member {number} maxHeroLevel
         * @memberof LvUp
         * @instance
         */
        LvUp.prototype.maxHeroLevel = 0;
    
        /**
         * LvUp foodLv.
         * @member {number} foodLv
         * @memberof LvUp
         * @instance
         */
        LvUp.prototype.foodLv = 0;
    
        /**
         * LvUp functionOpen.
         * @member {string} functionOpen
         * @memberof LvUp
         * @instance
         */
        LvUp.prototype.functionOpen = "";
    
        /**
         * Decodes a LvUp message from the specified reader or buffer.
         * @function decode
         * @memberof LvUp
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {LvUp} LvUp
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        LvUp.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.LvUp();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.playerExp = reader.int32();
                    break;
                case 3:
                    message.maxCityLevel = reader.int32();
                    break;
                case 4:
                    message.maxHeroLevel = reader.int32();
                    break;
                case 5:
                    message.foodLv = reader.int32();
                    break;
                case 6:
                    message.functionOpen = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return LvUp;
    })();
    
    $root.MatchNpc = (function() {
    
        /**
         * Properties of a MatchNpc.
         * @exports IMatchNpc
         * @interface IMatchNpc
         * @property {number|null} [id] MatchNpc id
         * @property {number|null} [armyId] MatchNpc armyId
         * @property {number|null} [fightCapacity] MatchNpc fightCapacity
         */
    
        /**
         * Constructs a new MatchNpc.
         * @exports MatchNpc
         * @classdesc Represents a MatchNpc.
         * @implements IMatchNpc
         * @constructor
         * @param {IMatchNpc=} [properties] Properties to set
         */
        function MatchNpc(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * MatchNpc id.
         * @member {number} id
         * @memberof MatchNpc
         * @instance
         */
        MatchNpc.prototype.id = 0;
    
        /**
         * MatchNpc armyId.
         * @member {number} armyId
         * @memberof MatchNpc
         * @instance
         */
        MatchNpc.prototype.armyId = 0;
    
        /**
         * MatchNpc fightCapacity.
         * @member {number} fightCapacity
         * @memberof MatchNpc
         * @instance
         */
        MatchNpc.prototype.fightCapacity = 0;
    
        /**
         * Decodes a MatchNpc message from the specified reader or buffer.
         * @function decode
         * @memberof MatchNpc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {MatchNpc} MatchNpc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        MatchNpc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.MatchNpc();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.armyId = reader.int32();
                    break;
                case 3:
                    message.fightCapacity = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return MatchNpc;
    })();
    
    $root.MatchReward = (function() {
    
        /**
         * Properties of a MatchReward.
         * @exports IMatchReward
         * @interface IMatchReward
         * @property {number|null} [id] MatchReward id
         * @property {number|null} [sort] MatchReward sort
         * @property {number|null} [type] MatchReward type
         * @property {number|null} [weight] MatchReward weight
         * @property {string|null} [reward] MatchReward reward
         */
    
        /**
         * Constructs a new MatchReward.
         * @exports MatchReward
         * @classdesc Represents a MatchReward.
         * @implements IMatchReward
         * @constructor
         * @param {IMatchReward=} [properties] Properties to set
         */
        function MatchReward(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * MatchReward id.
         * @member {number} id
         * @memberof MatchReward
         * @instance
         */
        MatchReward.prototype.id = 0;
    
        /**
         * MatchReward sort.
         * @member {number} sort
         * @memberof MatchReward
         * @instance
         */
        MatchReward.prototype.sort = 0;
    
        /**
         * MatchReward type.
         * @member {number} type
         * @memberof MatchReward
         * @instance
         */
        MatchReward.prototype.type = 0;
    
        /**
         * MatchReward weight.
         * @member {number} weight
         * @memberof MatchReward
         * @instance
         */
        MatchReward.prototype.weight = 0;
    
        /**
         * MatchReward reward.
         * @member {string} reward
         * @memberof MatchReward
         * @instance
         */
        MatchReward.prototype.reward = "";
    
        /**
         * Decodes a MatchReward message from the specified reader or buffer.
         * @function decode
         * @memberof MatchReward
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {MatchReward} MatchReward
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        MatchReward.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.MatchReward();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.sort = reader.int32();
                    break;
                case 3:
                    message.type = reader.int32();
                    break;
                case 4:
                    message.weight = reader.int32();
                    break;
                case 5:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return MatchReward;
    })();
    
    $root.Monster = (function() {
    
        /**
         * Properties of a Monster.
         * @exports IMonster
         * @interface IMonster
         * @property {number|null} [id] Monster id
         * @property {number|null} [monsterId] Monster monsterId
         * @property {string|null} [name] Monster name
         * @property {string|null} [nameEn] Monster nameEn
         * @property {number|null} [scale] Monster scale
         * @property {number|null} [level] Monster level
         * @property {number|null} [monsterType] Monster monsterType
         * @property {number|null} [effectId] Monster effectId
         * @property {number|null} [effectLv] Monster effectLv
         * @property {string|null} [attribute] Monster attribute
         * @property {number|null} [flag] Monster flag
         * @property {number|null} [quality] Monster quality
         * @property {string|null} [waitText] Monster waitText
         * @property {string|null} [fightText] Monster fightText
         * @property {string|null} [dieText] Monster dieText
         * @property {number|null} [battleType] Monster battleType
         * @property {string|null} [talents] Monster talents
         * @property {string|null} [linkSkill] Monster linkSkill
         * @property {string|null} [jobSkill] Monster jobSkill
         */
    
        /**
         * Constructs a new Monster.
         * @exports Monster
         * @classdesc Represents a Monster.
         * @implements IMonster
         * @constructor
         * @param {IMonster=} [properties] Properties to set
         */
        function Monster(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Monster id.
         * @member {number} id
         * @memberof Monster
         * @instance
         */
        Monster.prototype.id = 0;
    
        /**
         * Monster monsterId.
         * @member {number} monsterId
         * @memberof Monster
         * @instance
         */
        Monster.prototype.monsterId = 0;
    
        /**
         * Monster name.
         * @member {string} name
         * @memberof Monster
         * @instance
         */
        Monster.prototype.name = "";
    
        /**
         * Monster nameEn.
         * @member {string} nameEn
         * @memberof Monster
         * @instance
         */
        Monster.prototype.nameEn = "";
    
        /**
         * Monster scale.
         * @member {number} scale
         * @memberof Monster
         * @instance
         */
        Monster.prototype.scale = 0;
    
        /**
         * Monster level.
         * @member {number} level
         * @memberof Monster
         * @instance
         */
        Monster.prototype.level = 0;
    
        /**
         * Monster monsterType.
         * @member {number} monsterType
         * @memberof Monster
         * @instance
         */
        Monster.prototype.monsterType = 0;
    
        /**
         * Monster effectId.
         * @member {number} effectId
         * @memberof Monster
         * @instance
         */
        Monster.prototype.effectId = 0;
    
        /**
         * Monster effectLv.
         * @member {number} effectLv
         * @memberof Monster
         * @instance
         */
        Monster.prototype.effectLv = 0;
    
        /**
         * Monster attribute.
         * @member {string} attribute
         * @memberof Monster
         * @instance
         */
        Monster.prototype.attribute = "";
    
        /**
         * Monster flag.
         * @member {number} flag
         * @memberof Monster
         * @instance
         */
        Monster.prototype.flag = 0;
    
        /**
         * Monster quality.
         * @member {number} quality
         * @memberof Monster
         * @instance
         */
        Monster.prototype.quality = 0;
    
        /**
         * Monster waitText.
         * @member {string} waitText
         * @memberof Monster
         * @instance
         */
        Monster.prototype.waitText = "";
    
        /**
         * Monster fightText.
         * @member {string} fightText
         * @memberof Monster
         * @instance
         */
        Monster.prototype.fightText = "";
    
        /**
         * Monster dieText.
         * @member {string} dieText
         * @memberof Monster
         * @instance
         */
        Monster.prototype.dieText = "";
    
        /**
         * Monster battleType.
         * @member {number} battleType
         * @memberof Monster
         * @instance
         */
        Monster.prototype.battleType = 0;
    
        /**
         * Monster talents.
         * @member {string} talents
         * @memberof Monster
         * @instance
         */
        Monster.prototype.talents = "";
    
        /**
         * Monster linkSkill.
         * @member {string} linkSkill
         * @memberof Monster
         * @instance
         */
        Monster.prototype.linkSkill = "";
    
        /**
         * Monster jobSkill.
         * @member {string} jobSkill
         * @memberof Monster
         * @instance
         */
        Monster.prototype.jobSkill = "";
    
        /**
         * Decodes a Monster message from the specified reader or buffer.
         * @function decode
         * @memberof Monster
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Monster} Monster
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Monster.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Monster();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.monsterId = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.nameEn = reader.string();
                    break;
                case 5:
                    message.scale = reader.int32();
                    break;
                case 6:
                    message.level = reader.int32();
                    break;
                case 7:
                    message.monsterType = reader.int32();
                    break;
                case 8:
                    message.effectId = reader.int32();
                    break;
                case 9:
                    message.effectLv = reader.int32();
                    break;
                case 10:
                    message.attribute = reader.string();
                    break;
                case 11:
                    message.flag = reader.int32();
                    break;
                case 12:
                    message.quality = reader.int32();
                    break;
                case 13:
                    message.waitText = reader.string();
                    break;
                case 14:
                    message.fightText = reader.string();
                    break;
                case 15:
                    message.dieText = reader.string();
                    break;
                case 16:
                    message.battleType = reader.int32();
                    break;
                case 17:
                    message.talents = reader.string();
                    break;
                case 18:
                    message.linkSkill = reader.string();
                    break;
                case 19:
                    message.jobSkill = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Monster;
    })();
    
    $root.Notice = (function() {
    
        /**
         * Properties of a Notice.
         * @exports INotice
         * @interface INotice
         * @property {number|null} [id] Notice id
         * @property {number|null} [type] Notice type
         * @property {number|null} [weight] Notice weight
         * @property {number|null} [time] Notice time
         * @property {number|null} [internal] Notice internal
         * @property {number|null} [duration] Notice duration
         * @property {number|null} [num] Notice num
         */
    
        /**
         * Constructs a new Notice.
         * @exports Notice
         * @classdesc Represents a Notice.
         * @implements INotice
         * @constructor
         * @param {INotice=} [properties] Properties to set
         */
        function Notice(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Notice id.
         * @member {number} id
         * @memberof Notice
         * @instance
         */
        Notice.prototype.id = 0;
    
        /**
         * Notice type.
         * @member {number} type
         * @memberof Notice
         * @instance
         */
        Notice.prototype.type = 0;
    
        /**
         * Notice weight.
         * @member {number} weight
         * @memberof Notice
         * @instance
         */
        Notice.prototype.weight = 0;
    
        /**
         * Notice time.
         * @member {number} time
         * @memberof Notice
         * @instance
         */
        Notice.prototype.time = 0;
    
        /**
         * Notice internal.
         * @member {number} internal
         * @memberof Notice
         * @instance
         */
        Notice.prototype.internal = 0;
    
        /**
         * Notice duration.
         * @member {number} duration
         * @memberof Notice
         * @instance
         */
        Notice.prototype.duration = 0;
    
        /**
         * Notice num.
         * @member {number} num
         * @memberof Notice
         * @instance
         */
        Notice.prototype.num = 0;
    
        /**
         * Decodes a Notice message from the specified reader or buffer.
         * @function decode
         * @memberof Notice
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Notice} Notice
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Notice.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Notice();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.weight = reader.int32();
                    break;
                case 4:
                    message.time = reader.int32();
                    break;
                case 5:
                    message.internal = reader.int32();
                    break;
                case 6:
                    message.duration = reader.int32();
                    break;
                case 7:
                    message.num = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Notice;
    })();
    
    $root.OnlineReward = (function() {
    
        /**
         * Properties of an OnlineReward.
         * @exports IOnlineReward
         * @interface IOnlineReward
         * @property {number|null} [id] OnlineReward id
         * @property {number|null} [onlineTime] OnlineReward onlineTime
         * @property {string|null} [reward] OnlineReward reward
         */
    
        /**
         * Constructs a new OnlineReward.
         * @exports OnlineReward
         * @classdesc Represents an OnlineReward.
         * @implements IOnlineReward
         * @constructor
         * @param {IOnlineReward=} [properties] Properties to set
         */
        function OnlineReward(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * OnlineReward id.
         * @member {number} id
         * @memberof OnlineReward
         * @instance
         */
        OnlineReward.prototype.id = 0;
    
        /**
         * OnlineReward onlineTime.
         * @member {number} onlineTime
         * @memberof OnlineReward
         * @instance
         */
        OnlineReward.prototype.onlineTime = 0;
    
        /**
         * OnlineReward reward.
         * @member {string} reward
         * @memberof OnlineReward
         * @instance
         */
        OnlineReward.prototype.reward = "";
    
        /**
         * Decodes an OnlineReward message from the specified reader or buffer.
         * @function decode
         * @memberof OnlineReward
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {OnlineReward} OnlineReward
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        OnlineReward.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.OnlineReward();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.onlineTime = reader.int32();
                    break;
                case 3:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return OnlineReward;
    })();
    
    $root.Palace = (function() {
    
        /**
         * Properties of a Palace.
         * @exports IPalace
         * @interface IPalace
         * @property {number|null} [id] Palace id
         * @property {string|null} [name] Palace name
         * @property {string|null} [taskRequest] Palace taskRequest
         * @property {string|null} [reward1] Palace reward1
         * @property {string|null} [reward2] Palace reward2
         * @property {string|null} [reward3] Palace reward3
         * @property {string|null} [taskIntro] Palace taskIntro
         * @property {string|null} [reward] Palace reward
         * @property {string|null} [rewardRandom] Palace rewardRandom
         * @property {string|null} [effect] Palace effect
         * @property {string|null} [effectIntro] Palace effectIntro
         */
    
        /**
         * Constructs a new Palace.
         * @exports Palace
         * @classdesc Represents a Palace.
         * @implements IPalace
         * @constructor
         * @param {IPalace=} [properties] Properties to set
         */
        function Palace(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Palace id.
         * @member {number} id
         * @memberof Palace
         * @instance
         */
        Palace.prototype.id = 0;
    
        /**
         * Palace name.
         * @member {string} name
         * @memberof Palace
         * @instance
         */
        Palace.prototype.name = "";
    
        /**
         * Palace taskRequest.
         * @member {string} taskRequest
         * @memberof Palace
         * @instance
         */
        Palace.prototype.taskRequest = "";
    
        /**
         * Palace reward1.
         * @member {string} reward1
         * @memberof Palace
         * @instance
         */
        Palace.prototype.reward1 = "";
    
        /**
         * Palace reward2.
         * @member {string} reward2
         * @memberof Palace
         * @instance
         */
        Palace.prototype.reward2 = "";
    
        /**
         * Palace reward3.
         * @member {string} reward3
         * @memberof Palace
         * @instance
         */
        Palace.prototype.reward3 = "";
    
        /**
         * Palace taskIntro.
         * @member {string} taskIntro
         * @memberof Palace
         * @instance
         */
        Palace.prototype.taskIntro = "";
    
        /**
         * Palace reward.
         * @member {string} reward
         * @memberof Palace
         * @instance
         */
        Palace.prototype.reward = "";
    
        /**
         * Palace rewardRandom.
         * @member {string} rewardRandom
         * @memberof Palace
         * @instance
         */
        Palace.prototype.rewardRandom = "";
    
        /**
         * Palace effect.
         * @member {string} effect
         * @memberof Palace
         * @instance
         */
        Palace.prototype.effect = "";
    
        /**
         * Palace effectIntro.
         * @member {string} effectIntro
         * @memberof Palace
         * @instance
         */
        Palace.prototype.effectIntro = "";
    
        /**
         * Decodes a Palace message from the specified reader or buffer.
         * @function decode
         * @memberof Palace
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Palace} Palace
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Palace.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Palace();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.taskRequest = reader.string();
                    break;
                case 4:
                    message.reward1 = reader.string();
                    break;
                case 5:
                    message.reward2 = reader.string();
                    break;
                case 6:
                    message.reward3 = reader.string();
                    break;
                case 7:
                    message.taskIntro = reader.string();
                    break;
                case 8:
                    message.reward = reader.string();
                    break;
                case 9:
                    message.rewardRandom = reader.string();
                    break;
                case 10:
                    message.effect = reader.string();
                    break;
                case 11:
                    message.effectIntro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Palace;
    })();
    
    $root.Params = (function() {
    
        /**
         * Properties of a Params.
         * @exports IParams
         * @interface IParams
         * @property {number|null} [id] Params id
         * @property {string|null} [name] Params name
         * @property {number|null} [value] Params value
         */
    
        /**
         * Constructs a new Params.
         * @exports Params
         * @classdesc Represents a Params.
         * @implements IParams
         * @constructor
         * @param {IParams=} [properties] Properties to set
         */
        function Params(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Params id.
         * @member {number} id
         * @memberof Params
         * @instance
         */
        Params.prototype.id = 0;
    
        /**
         * Params name.
         * @member {string} name
         * @memberof Params
         * @instance
         */
        Params.prototype.name = "";
    
        /**
         * Params value.
         * @member {number} value
         * @memberof Params
         * @instance
         */
        Params.prototype.value = 0;
    
        /**
         * Decodes a Params message from the specified reader or buffer.
         * @function decode
         * @memberof Params
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Params} Params
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Params.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Params();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.value = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Params;
    })();
    
    $root.PayInfo = (function() {
    
        /**
         * Properties of a PayInfo.
         * @exports IPayInfo
         * @interface IPayInfo
         * @property {number|null} [id] PayInfo id
         * @property {number|null} [type] PayInfo type
         * @property {string|null} [name] PayInfo name
         * @property {number|null} [payDiam] PayInfo payDiam
         * @property {string|null} [ratio] PayInfo ratio
         * @property {string|null} [reward] PayInfo reward
         * @property {string|null} [pic] PayInfo pic
         */
    
        /**
         * Constructs a new PayInfo.
         * @exports PayInfo
         * @classdesc Represents a PayInfo.
         * @implements IPayInfo
         * @constructor
         * @param {IPayInfo=} [properties] Properties to set
         */
        function PayInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * PayInfo id.
         * @member {number} id
         * @memberof PayInfo
         * @instance
         */
        PayInfo.prototype.id = 0;
    
        /**
         * PayInfo type.
         * @member {number} type
         * @memberof PayInfo
         * @instance
         */
        PayInfo.prototype.type = 0;
    
        /**
         * PayInfo name.
         * @member {string} name
         * @memberof PayInfo
         * @instance
         */
        PayInfo.prototype.name = "";
    
        /**
         * PayInfo payDiam.
         * @member {number} payDiam
         * @memberof PayInfo
         * @instance
         */
        PayInfo.prototype.payDiam = 0;
    
        /**
         * PayInfo ratio.
         * @member {string} ratio
         * @memberof PayInfo
         * @instance
         */
        PayInfo.prototype.ratio = "";
    
        /**
         * PayInfo reward.
         * @member {string} reward
         * @memberof PayInfo
         * @instance
         */
        PayInfo.prototype.reward = "";
    
        /**
         * PayInfo pic.
         * @member {string} pic
         * @memberof PayInfo
         * @instance
         */
        PayInfo.prototype.pic = "";
    
        /**
         * Decodes a PayInfo message from the specified reader or buffer.
         * @function decode
         * @memberof PayInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {PayInfo} PayInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        PayInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.PayInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.payDiam = reader.int32();
                    break;
                case 5:
                    message.ratio = reader.string();
                    break;
                case 6:
                    message.reward = reader.string();
                    break;
                case 7:
                    message.pic = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return PayInfo;
    })();
    
    $root.Plot = (function() {
    
        /**
         * Properties of a Plot.
         * @exports IPlot
         * @interface IPlot
         * @property {number|null} [id] Plot id
         * @property {string|null} [charactorList] Plot charactorList
         * @property {string|null} [dialogList] Plot dialogList
         */
    
        /**
         * Constructs a new Plot.
         * @exports Plot
         * @classdesc Represents a Plot.
         * @implements IPlot
         * @constructor
         * @param {IPlot=} [properties] Properties to set
         */
        function Plot(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Plot id.
         * @member {number} id
         * @memberof Plot
         * @instance
         */
        Plot.prototype.id = 0;
    
        /**
         * Plot charactorList.
         * @member {string} charactorList
         * @memberof Plot
         * @instance
         */
        Plot.prototype.charactorList = "";
    
        /**
         * Plot dialogList.
         * @member {string} dialogList
         * @memberof Plot
         * @instance
         */
        Plot.prototype.dialogList = "";
    
        /**
         * Decodes a Plot message from the specified reader or buffer.
         * @function decode
         * @memberof Plot
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Plot} Plot
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Plot.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Plot();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.charactorList = reader.string();
                    break;
                case 3:
                    message.dialogList = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Plot;
    })();
    
    $root.Power = (function() {
    
        /**
         * Properties of a Power.
         * @exports IPower
         * @interface IPower
         * @property {number|null} [id] Power id
         * @property {string|null} [name] Power name
         * @property {number|null} [request1] Power request1
         * @property {string|null} [reward1] Power reward1
         * @property {number|null} [request2] Power request2
         * @property {string|null} [reward2] Power reward2
         * @property {number|null} [request3] Power request3
         * @property {string|null} [reward3] Power reward3
         * @property {number|null} [pic] Power pic
         */
    
        /**
         * Constructs a new Power.
         * @exports Power
         * @classdesc Represents a Power.
         * @implements IPower
         * @constructor
         * @param {IPower=} [properties] Properties to set
         */
        function Power(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Power id.
         * @member {number} id
         * @memberof Power
         * @instance
         */
        Power.prototype.id = 0;
    
        /**
         * Power name.
         * @member {string} name
         * @memberof Power
         * @instance
         */
        Power.prototype.name = "";
    
        /**
         * Power request1.
         * @member {number} request1
         * @memberof Power
         * @instance
         */
        Power.prototype.request1 = 0;
    
        /**
         * Power reward1.
         * @member {string} reward1
         * @memberof Power
         * @instance
         */
        Power.prototype.reward1 = "";
    
        /**
         * Power request2.
         * @member {number} request2
         * @memberof Power
         * @instance
         */
        Power.prototype.request2 = 0;
    
        /**
         * Power reward2.
         * @member {string} reward2
         * @memberof Power
         * @instance
         */
        Power.prototype.reward2 = "";
    
        /**
         * Power request3.
         * @member {number} request3
         * @memberof Power
         * @instance
         */
        Power.prototype.request3 = 0;
    
        /**
         * Power reward3.
         * @member {string} reward3
         * @memberof Power
         * @instance
         */
        Power.prototype.reward3 = "";
    
        /**
         * Power pic.
         * @member {number} pic
         * @memberof Power
         * @instance
         */
        Power.prototype.pic = 0;
    
        /**
         * Decodes a Power message from the specified reader or buffer.
         * @function decode
         * @memberof Power
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Power} Power
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Power.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Power();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.request1 = reader.int32();
                    break;
                case 4:
                    message.reward1 = reader.string();
                    break;
                case 5:
                    message.request2 = reader.int32();
                    break;
                case 6:
                    message.reward2 = reader.string();
                    break;
                case 7:
                    message.request3 = reader.int32();
                    break;
                case 8:
                    message.reward3 = reader.string();
                    break;
                case 9:
                    message.pic = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Power;
    })();
    
    $root.RandomName = (function() {
    
        /**
         * Properties of a RandomName.
         * @exports IRandomName
         * @interface IRandomName
         * @property {number|null} [id] RandomName id
         * @property {string|null} [frontName] RandomName frontName
         * @property {string|null} [middleName] RandomName middleName
         * @property {string|null} [lastName] RandomName lastName
         */
    
        /**
         * Constructs a new RandomName.
         * @exports RandomName
         * @classdesc Represents a RandomName.
         * @implements IRandomName
         * @constructor
         * @param {IRandomName=} [properties] Properties to set
         */
        function RandomName(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * RandomName id.
         * @member {number} id
         * @memberof RandomName
         * @instance
         */
        RandomName.prototype.id = 0;
    
        /**
         * RandomName frontName.
         * @member {string} frontName
         * @memberof RandomName
         * @instance
         */
        RandomName.prototype.frontName = "";
    
        /**
         * RandomName middleName.
         * @member {string} middleName
         * @memberof RandomName
         * @instance
         */
        RandomName.prototype.middleName = "";
    
        /**
         * RandomName lastName.
         * @member {string} lastName
         * @memberof RandomName
         * @instance
         */
        RandomName.prototype.lastName = "";
    
        /**
         * Decodes a RandomName message from the specified reader or buffer.
         * @function decode
         * @memberof RandomName
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {RandomName} RandomName
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RandomName.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.RandomName();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.frontName = reader.string();
                    break;
                case 3:
                    message.middleName = reader.string();
                    break;
                case 4:
                    message.lastName = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return RandomName;
    })();
    
    $root.RankingReward = (function() {
    
        /**
         * Properties of a RankingReward.
         * @exports IRankingReward
         * @interface IRankingReward
         * @property {number|null} [id] RankingReward id
         * @property {number|null} [type] RankingReward type
         * @property {string|null} [name] RankingReward name
         * @property {number|null} [position] RankingReward position
         * @property {string|null} [reward] RankingReward reward
         * @property {string|null} [firstReward] RankingReward firstReward
         */
    
        /**
         * Constructs a new RankingReward.
         * @exports RankingReward
         * @classdesc Represents a RankingReward.
         * @implements IRankingReward
         * @constructor
         * @param {IRankingReward=} [properties] Properties to set
         */
        function RankingReward(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * RankingReward id.
         * @member {number} id
         * @memberof RankingReward
         * @instance
         */
        RankingReward.prototype.id = 0;
    
        /**
         * RankingReward type.
         * @member {number} type
         * @memberof RankingReward
         * @instance
         */
        RankingReward.prototype.type = 0;
    
        /**
         * RankingReward name.
         * @member {string} name
         * @memberof RankingReward
         * @instance
         */
        RankingReward.prototype.name = "";
    
        /**
         * RankingReward position.
         * @member {number} position
         * @memberof RankingReward
         * @instance
         */
        RankingReward.prototype.position = 0;
    
        /**
         * RankingReward reward.
         * @member {string} reward
         * @memberof RankingReward
         * @instance
         */
        RankingReward.prototype.reward = "";
    
        /**
         * RankingReward firstReward.
         * @member {string} firstReward
         * @memberof RankingReward
         * @instance
         */
        RankingReward.prototype.firstReward = "";
    
        /**
         * Decodes a RankingReward message from the specified reader or buffer.
         * @function decode
         * @memberof RankingReward
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {RankingReward} RankingReward
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        RankingReward.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.RankingReward();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.position = reader.int32();
                    break;
                case 5:
                    message.reward = reader.string();
                    break;
                case 6:
                    message.firstReward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return RankingReward;
    })();
    
    $root.Series = (function() {
    
        /**
         * Properties of a Series.
         * @exports ISeries
         * @interface ISeries
         * @property {number|null} [id] Series id
         * @property {number|null} [type] Series type
         * @property {number|null} [index] Series index
         * @property {number|null} [num] Series num
         * @property {string|null} [intro] Series intro
         */
    
        /**
         * Constructs a new Series.
         * @exports Series
         * @classdesc Represents a Series.
         * @implements ISeries
         * @constructor
         * @param {ISeries=} [properties] Properties to set
         */
        function Series(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Series id.
         * @member {number} id
         * @memberof Series
         * @instance
         */
        Series.prototype.id = 0;
    
        /**
         * Series type.
         * @member {number} type
         * @memberof Series
         * @instance
         */
        Series.prototype.type = 0;
    
        /**
         * Series index.
         * @member {number} index
         * @memberof Series
         * @instance
         */
        Series.prototype.index = 0;
    
        /**
         * Series num.
         * @member {number} num
         * @memberof Series
         * @instance
         */
        Series.prototype.num = 0;
    
        /**
         * Series intro.
         * @member {string} intro
         * @memberof Series
         * @instance
         */
        Series.prototype.intro = "";
    
        /**
         * Decodes a Series message from the specified reader or buffer.
         * @function decode
         * @memberof Series
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Series} Series
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Series.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Series();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.index = reader.int32();
                    break;
                case 4:
                    message.num = reader.int32();
                    break;
                case 5:
                    message.intro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Series;
    })();
    
    $root.TaskInfo = (function() {
    
        /**
         * Properties of a TaskInfo.
         * @exports ITaskInfo
         * @interface ITaskInfo
         * @property {number|null} [id] TaskInfo id
         * @property {number|null} [type] TaskInfo type
         * @property {number|null} [level] TaskInfo level
         * @property {string|null} [name] TaskInfo name
         * @property {string|null} [limit] TaskInfo limit
         * @property {string|null} [request] TaskInfo request
         * @property {string|null} [cost] TaskInfo cost
         * @property {string|null} [reward] TaskInfo reward
         */
    
        /**
         * Constructs a new TaskInfo.
         * @exports TaskInfo
         * @classdesc Represents a TaskInfo.
         * @implements ITaskInfo
         * @constructor
         * @param {ITaskInfo=} [properties] Properties to set
         */
        function TaskInfo(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * TaskInfo id.
         * @member {number} id
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.id = 0;
    
        /**
         * TaskInfo type.
         * @member {number} type
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.type = 0;
    
        /**
         * TaskInfo level.
         * @member {number} level
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.level = 0;
    
        /**
         * TaskInfo name.
         * @member {string} name
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.name = "";
    
        /**
         * TaskInfo limit.
         * @member {string} limit
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.limit = "";
    
        /**
         * TaskInfo request.
         * @member {string} request
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.request = "";
    
        /**
         * TaskInfo cost.
         * @member {string} cost
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.cost = "";
    
        /**
         * TaskInfo reward.
         * @member {string} reward
         * @memberof TaskInfo
         * @instance
         */
        TaskInfo.prototype.reward = "";
    
        /**
         * Decodes a TaskInfo message from the specified reader or buffer.
         * @function decode
         * @memberof TaskInfo
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {TaskInfo} TaskInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        TaskInfo.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TaskInfo();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.level = reader.int32();
                    break;
                case 4:
                    message.name = reader.string();
                    break;
                case 5:
                    message.limit = reader.string();
                    break;
                case 6:
                    message.request = reader.string();
                    break;
                case 7:
                    message.cost = reader.string();
                    break;
                case 8:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return TaskInfo;
    })();
    
    $root.TaskProgress = (function() {
    
        /**
         * Properties of a TaskProgress.
         * @exports ITaskProgress
         * @interface ITaskProgress
         * @property {number|null} [id] TaskProgress id
         * @property {number|null} [num] TaskProgress num
         * @property {string|null} [reward] TaskProgress reward
         */
    
        /**
         * Constructs a new TaskProgress.
         * @exports TaskProgress
         * @classdesc Represents a TaskProgress.
         * @implements ITaskProgress
         * @constructor
         * @param {ITaskProgress=} [properties] Properties to set
         */
        function TaskProgress(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * TaskProgress id.
         * @member {number} id
         * @memberof TaskProgress
         * @instance
         */
        TaskProgress.prototype.id = 0;
    
        /**
         * TaskProgress num.
         * @member {number} num
         * @memberof TaskProgress
         * @instance
         */
        TaskProgress.prototype.num = 0;
    
        /**
         * TaskProgress reward.
         * @member {string} reward
         * @memberof TaskProgress
         * @instance
         */
        TaskProgress.prototype.reward = "";
    
        /**
         * Decodes a TaskProgress message from the specified reader or buffer.
         * @function decode
         * @memberof TaskProgress
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {TaskProgress} TaskProgress
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        TaskProgress.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TaskProgress();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.num = reader.int32();
                    break;
                case 3:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return TaskProgress;
    })();
    
    $root.Tbc = (function() {
    
        /**
         * Properties of a Tbc.
         * @exports ITbc
         * @interface ITbc
         * @property {number|null} [id] Tbc id
         * @property {string|null} [matchRange] Tbc matchRange
         * @property {number|null} [matchMaxLv] Tbc matchMaxLv
         * @property {number|null} [rewardPercent] Tbc rewardPercent
         */
    
        /**
         * Constructs a new Tbc.
         * @exports Tbc
         * @classdesc Represents a Tbc.
         * @implements ITbc
         * @constructor
         * @param {ITbc=} [properties] Properties to set
         */
        function Tbc(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Tbc id.
         * @member {number} id
         * @memberof Tbc
         * @instance
         */
        Tbc.prototype.id = 0;
    
        /**
         * Tbc matchRange.
         * @member {string} matchRange
         * @memberof Tbc
         * @instance
         */
        Tbc.prototype.matchRange = "";
    
        /**
         * Tbc matchMaxLv.
         * @member {number} matchMaxLv
         * @memberof Tbc
         * @instance
         */
        Tbc.prototype.matchMaxLv = 0;
    
        /**
         * Tbc rewardPercent.
         * @member {number} rewardPercent
         * @memberof Tbc
         * @instance
         */
        Tbc.prototype.rewardPercent = 0;
    
        /**
         * Decodes a Tbc message from the specified reader or buffer.
         * @function decode
         * @memberof Tbc
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Tbc} Tbc
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Tbc.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Tbc();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.matchRange = reader.string();
                    break;
                case 3:
                    message.matchMaxLv = reader.int32();
                    break;
                case 4:
                    message.rewardPercent = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Tbc;
    })();
    
    $root.TbcShop = (function() {
    
        /**
         * Properties of a TbcShop.
         * @exports ITbcShop
         * @interface ITbcShop
         * @property {number|null} [id] TbcShop id
         * @property {number|null} [cost] TbcShop cost
         * @property {string|null} [reward] TbcShop reward
         */
    
        /**
         * Constructs a new TbcShop.
         * @exports TbcShop
         * @classdesc Represents a TbcShop.
         * @implements ITbcShop
         * @constructor
         * @param {ITbcShop=} [properties] Properties to set
         */
        function TbcShop(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * TbcShop id.
         * @member {number} id
         * @memberof TbcShop
         * @instance
         */
        TbcShop.prototype.id = 0;
    
        /**
         * TbcShop cost.
         * @member {number} cost
         * @memberof TbcShop
         * @instance
         */
        TbcShop.prototype.cost = 0;
    
        /**
         * TbcShop reward.
         * @member {string} reward
         * @memberof TbcShop
         * @instance
         */
        TbcShop.prototype.reward = "";
    
        /**
         * Decodes a TbcShop message from the specified reader or buffer.
         * @function decode
         * @memberof TbcShop
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {TbcShop} TbcShop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        TbcShop.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TbcShop();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.cost = reader.int32();
                    break;
                case 3:
                    message.reward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return TbcShop;
    })();
    
    $root.Tech = (function() {
    
        /**
         * Properties of a Tech.
         * @exports ITech
         * @interface ITech
         * @property {number|null} [id] Tech id
         * @property {number|null} [type] Tech type
         * @property {string|null} [name] Tech name
         * @property {number|null} [openLv] Tech openLv
         * @property {number|null} [maxLv] Tech maxLv
         * @property {string|null} [effectId] Tech effectId
         * @property {string|null} [effect] Tech effect
         * @property {string|null} [info] Tech info
         * @property {string|null} [cost] Tech cost
         * @property {string|null} [pic] Tech pic
         */
    
        /**
         * Constructs a new Tech.
         * @exports Tech
         * @classdesc Represents a Tech.
         * @implements ITech
         * @constructor
         * @param {ITech=} [properties] Properties to set
         */
        function Tech(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Tech id.
         * @member {number} id
         * @memberof Tech
         * @instance
         */
        Tech.prototype.id = 0;
    
        /**
         * Tech type.
         * @member {number} type
         * @memberof Tech
         * @instance
         */
        Tech.prototype.type = 0;
    
        /**
         * Tech name.
         * @member {string} name
         * @memberof Tech
         * @instance
         */
        Tech.prototype.name = "";
    
        /**
         * Tech openLv.
         * @member {number} openLv
         * @memberof Tech
         * @instance
         */
        Tech.prototype.openLv = 0;
    
        /**
         * Tech maxLv.
         * @member {number} maxLv
         * @memberof Tech
         * @instance
         */
        Tech.prototype.maxLv = 0;
    
        /**
         * Tech effectId.
         * @member {string} effectId
         * @memberof Tech
         * @instance
         */
        Tech.prototype.effectId = "";
    
        /**
         * Tech effect.
         * @member {string} effect
         * @memberof Tech
         * @instance
         */
        Tech.prototype.effect = "";
    
        /**
         * Tech info.
         * @member {string} info
         * @memberof Tech
         * @instance
         */
        Tech.prototype.info = "";
    
        /**
         * Tech cost.
         * @member {string} cost
         * @memberof Tech
         * @instance
         */
        Tech.prototype.cost = "";
    
        /**
         * Tech pic.
         * @member {string} pic
         * @memberof Tech
         * @instance
         */
        Tech.prototype.pic = "";
    
        /**
         * Decodes a Tech message from the specified reader or buffer.
         * @function decode
         * @memberof Tech
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Tech} Tech
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Tech.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Tech();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.openLv = reader.int32();
                    break;
                case 5:
                    message.maxLv = reader.int32();
                    break;
                case 6:
                    message.effectId = reader.string();
                    break;
                case 7:
                    message.effect = reader.string();
                    break;
                case 8:
                    message.info = reader.string();
                    break;
                case 9:
                    message.cost = reader.string();
                    break;
                case 10:
                    message.pic = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Tech;
    })();
    
    $root.Treasure = (function() {
    
        /**
         * Properties of a Treasure.
         * @exports ITreasure
         * @interface ITreasure
         * @property {number|null} [id] Treasure id
         * @property {number|null} [treasureId] Treasure treasureId
         * @property {string|null} [name] Treasure name
         * @property {number|null} [lv] Treasure lv
         * @property {string|null} [cost] Treasure cost
         * @property {number|null} [effectId] Treasure effectId
         * @property {number|null} [effectLv] Treasure effectLv
         * @property {number|null} [type] Treasure type
         */
    
        /**
         * Constructs a new Treasure.
         * @exports Treasure
         * @classdesc Represents a Treasure.
         * @implements ITreasure
         * @constructor
         * @param {ITreasure=} [properties] Properties to set
         */
        function Treasure(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Treasure id.
         * @member {number} id
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.id = 0;
    
        /**
         * Treasure treasureId.
         * @member {number} treasureId
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.treasureId = 0;
    
        /**
         * Treasure name.
         * @member {string} name
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.name = "";
    
        /**
         * Treasure lv.
         * @member {number} lv
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.lv = 0;
    
        /**
         * Treasure cost.
         * @member {string} cost
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.cost = "";
    
        /**
         * Treasure effectId.
         * @member {number} effectId
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.effectId = 0;
    
        /**
         * Treasure effectLv.
         * @member {number} effectLv
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.effectLv = 0;
    
        /**
         * Treasure type.
         * @member {number} type
         * @memberof Treasure
         * @instance
         */
        Treasure.prototype.type = 0;
    
        /**
         * Decodes a Treasure message from the specified reader or buffer.
         * @function decode
         * @memberof Treasure
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Treasure} Treasure
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Treasure.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Treasure();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.treasureId = reader.int32();
                    break;
                case 3:
                    message.name = reader.string();
                    break;
                case 4:
                    message.lv = reader.int32();
                    break;
                case 5:
                    message.cost = reader.string();
                    break;
                case 6:
                    message.effectId = reader.int32();
                    break;
                case 7:
                    message.effectLv = reader.int32();
                    break;
                case 8:
                    message.type = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Treasure;
    })();
    
    $root.Trick = (function() {
    
        /**
         * Properties of a Trick.
         * @exports ITrick
         * @interface ITrick
         * @property {number|null} [id] Trick id
         * @property {string|null} [name] Trick name
         * @property {number|null} [time] Trick time
         * @property {string|null} [intro] Trick intro
         * @property {number|null} [effect] Trick effect
         * @property {string|null} [pic] Trick pic
         */
    
        /**
         * Constructs a new Trick.
         * @exports Trick
         * @classdesc Represents a Trick.
         * @implements ITrick
         * @constructor
         * @param {ITrick=} [properties] Properties to set
         */
        function Trick(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Trick id.
         * @member {number} id
         * @memberof Trick
         * @instance
         */
        Trick.prototype.id = 0;
    
        /**
         * Trick name.
         * @member {string} name
         * @memberof Trick
         * @instance
         */
        Trick.prototype.name = "";
    
        /**
         * Trick time.
         * @member {number} time
         * @memberof Trick
         * @instance
         */
        Trick.prototype.time = 0;
    
        /**
         * Trick intro.
         * @member {string} intro
         * @memberof Trick
         * @instance
         */
        Trick.prototype.intro = "";
    
        /**
         * Trick effect.
         * @member {number} effect
         * @memberof Trick
         * @instance
         */
        Trick.prototype.effect = 0;
    
        /**
         * Trick pic.
         * @member {string} pic
         * @memberof Trick
         * @instance
         */
        Trick.prototype.pic = "";
    
        /**
         * Decodes a Trick message from the specified reader or buffer.
         * @function decode
         * @memberof Trick
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Trick} Trick
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Trick.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trick();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.time = reader.int32();
                    break;
                case 4:
                    message.intro = reader.string();
                    break;
                case 5:
                    message.effect = reader.int32();
                    break;
                case 6:
                    message.pic = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Trick;
    })();
    
    $root.Vip = (function() {
    
        /**
         * Properties of a Vip.
         * @exports IVip
         * @interface IVip
         * @property {number|null} [id] Vip id
         * @property {string|null} [name] Vip name
         * @property {number|null} [diamNum] Vip diamNum
         * @property {string|null} [intro] Vip intro
         * @property {string|null} [vipRight] Vip vipRight
         * @property {string|null} [vipReward] Vip vipReward
         */
    
        /**
         * Constructs a new Vip.
         * @exports Vip
         * @classdesc Represents a Vip.
         * @implements IVip
         * @constructor
         * @param {IVip=} [properties] Properties to set
         */
        function Vip(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Vip id.
         * @member {number} id
         * @memberof Vip
         * @instance
         */
        Vip.prototype.id = 0;
    
        /**
         * Vip name.
         * @member {string} name
         * @memberof Vip
         * @instance
         */
        Vip.prototype.name = "";
    
        /**
         * Vip diamNum.
         * @member {number} diamNum
         * @memberof Vip
         * @instance
         */
        Vip.prototype.diamNum = 0;
    
        /**
         * Vip intro.
         * @member {string} intro
         * @memberof Vip
         * @instance
         */
        Vip.prototype.intro = "";
    
        /**
         * Vip vipRight.
         * @member {string} vipRight
         * @memberof Vip
         * @instance
         */
        Vip.prototype.vipRight = "";
    
        /**
         * Vip vipReward.
         * @member {string} vipReward
         * @memberof Vip
         * @instance
         */
        Vip.prototype.vipReward = "";
    
        /**
         * Decodes a Vip message from the specified reader or buffer.
         * @function decode
         * @memberof Vip
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Vip} Vip
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Vip.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Vip();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.diamNum = reader.int32();
                    break;
                case 4:
                    message.intro = reader.string();
                    break;
                case 5:
                    message.vipRight = reader.string();
                    break;
                case 6:
                    message.vipReward = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Vip;
    })();
    
    $root.Visitor = (function() {
    
        /**
         * Properties of a Visitor.
         * @exports IVisitor
         * @interface IVisitor
         * @property {number|null} [id] Visitor id
         * @property {number|null} [visitor] Visitor visitor
         * @property {number|null} [requestGeneral] Visitor requestGeneral
         * @property {number|null} [requestJob] Visitor requestJob
         */
    
        /**
         * Constructs a new Visitor.
         * @exports Visitor
         * @classdesc Represents a Visitor.
         * @implements IVisitor
         * @constructor
         * @param {IVisitor=} [properties] Properties to set
         */
        function Visitor(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Visitor id.
         * @member {number} id
         * @memberof Visitor
         * @instance
         */
        Visitor.prototype.id = 0;
    
        /**
         * Visitor visitor.
         * @member {number} visitor
         * @memberof Visitor
         * @instance
         */
        Visitor.prototype.visitor = 0;
    
        /**
         * Visitor requestGeneral.
         * @member {number} requestGeneral
         * @memberof Visitor
         * @instance
         */
        Visitor.prototype.requestGeneral = 0;
    
        /**
         * Visitor requestJob.
         * @member {number} requestJob
         * @memberof Visitor
         * @instance
         */
        Visitor.prototype.requestJob = 0;
    
        /**
         * Decodes a Visitor message from the specified reader or buffer.
         * @function decode
         * @memberof Visitor
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Visitor} Visitor
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Visitor.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Visitor();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.visitor = reader.int32();
                    break;
                case 3:
                    message.requestGeneral = reader.int32();
                    break;
                case 4:
                    message.requestJob = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Visitor;
    })();
    
    $root.World = (function() {
    
        /**
         * Properties of a World.
         * @exports IWorld
         * @interface IWorld
         * @property {number|null} [id] World id
         * @property {string|null} [name] World name
         * @property {number|null} [preLv] World preLv
         * @property {string|null} [reward] World reward
         * @property {number|null} [rankPic] World rankPic
         * @property {string|null} [cost] World cost
         * @property {number|null} [type] World type
         * @property {string|null} [enemyRatio] World enemyRatio
         * @property {string|null} [rewardRatio] World rewardRatio
         * @property {string|null} [firstScout] World firstScout
         */
    
        /**
         * Constructs a new World.
         * @exports World
         * @classdesc Represents a World.
         * @implements IWorld
         * @constructor
         * @param {IWorld=} [properties] Properties to set
         */
        function World(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * World id.
         * @member {number} id
         * @memberof World
         * @instance
         */
        World.prototype.id = 0;
    
        /**
         * World name.
         * @member {string} name
         * @memberof World
         * @instance
         */
        World.prototype.name = "";
    
        /**
         * World preLv.
         * @member {number} preLv
         * @memberof World
         * @instance
         */
        World.prototype.preLv = 0;
    
        /**
         * World reward.
         * @member {string} reward
         * @memberof World
         * @instance
         */
        World.prototype.reward = "";
    
        /**
         * World rankPic.
         * @member {number} rankPic
         * @memberof World
         * @instance
         */
        World.prototype.rankPic = 0;
    
        /**
         * World cost.
         * @member {string} cost
         * @memberof World
         * @instance
         */
        World.prototype.cost = "";
    
        /**
         * World type.
         * @member {number} type
         * @memberof World
         * @instance
         */
        World.prototype.type = 0;
    
        /**
         * World enemyRatio.
         * @member {string} enemyRatio
         * @memberof World
         * @instance
         */
        World.prototype.enemyRatio = "";
    
        /**
         * World rewardRatio.
         * @member {string} rewardRatio
         * @memberof World
         * @instance
         */
        World.prototype.rewardRatio = "";
    
        /**
         * World firstScout.
         * @member {string} firstScout
         * @memberof World
         * @instance
         */
        World.prototype.firstScout = "";
    
        /**
         * Decodes a World message from the specified reader or buffer.
         * @function decode
         * @memberof World
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {World} World
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        World.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.World();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.preLv = reader.int32();
                    break;
                case 4:
                    message.reward = reader.string();
                    break;
                case 5:
                    message.rankPic = reader.int32();
                    break;
                case 6:
                    message.cost = reader.string();
                    break;
                case 7:
                    message.type = reader.int32();
                    break;
                case 8:
                    message.enemyRatio = reader.string();
                    break;
                case 9:
                    message.rewardRatio = reader.string();
                    break;
                case 10:
                    message.firstScout = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return World;
    })();
    
    $root.WorldGiftTask = (function() {
    
        /**
         * Properties of a WorldGiftTask.
         * @exports IWorldGiftTask
         * @interface IWorldGiftTask
         * @property {number|null} [id] WorldGiftTask id
         * @property {number|null} [type] WorldGiftTask type
         * @property {number|null} [taskId] WorldGiftTask taskId
         * @property {number|null} [lv] WorldGiftTask lv
         * @property {string|null} [requestStr] WorldGiftTask requestStr
         * @property {string|null} [requestMin] WorldGiftTask requestMin
         * @property {string|null} [reward] WorldGiftTask reward
         * @property {string|null} [intro] WorldGiftTask intro
         */
    
        /**
         * Constructs a new WorldGiftTask.
         * @exports WorldGiftTask
         * @classdesc Represents a WorldGiftTask.
         * @implements IWorldGiftTask
         * @constructor
         * @param {IWorldGiftTask=} [properties] Properties to set
         */
        function WorldGiftTask(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * WorldGiftTask id.
         * @member {number} id
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.id = 0;
    
        /**
         * WorldGiftTask type.
         * @member {number} type
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.type = 0;
    
        /**
         * WorldGiftTask taskId.
         * @member {number} taskId
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.taskId = 0;
    
        /**
         * WorldGiftTask lv.
         * @member {number} lv
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.lv = 0;
    
        /**
         * WorldGiftTask requestStr.
         * @member {string} requestStr
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.requestStr = "";
    
        /**
         * WorldGiftTask requestMin.
         * @member {string} requestMin
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.requestMin = "";
    
        /**
         * WorldGiftTask reward.
         * @member {string} reward
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.reward = "";
    
        /**
         * WorldGiftTask intro.
         * @member {string} intro
         * @memberof WorldGiftTask
         * @instance
         */
        WorldGiftTask.prototype.intro = "";
    
        /**
         * Decodes a WorldGiftTask message from the specified reader or buffer.
         * @function decode
         * @memberof WorldGiftTask
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {WorldGiftTask} WorldGiftTask
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        WorldGiftTask.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WorldGiftTask();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.type = reader.int32();
                    break;
                case 3:
                    message.taskId = reader.int32();
                    break;
                case 4:
                    message.lv = reader.int32();
                    break;
                case 5:
                    message.requestStr = reader.string();
                    break;
                case 6:
                    message.requestMin = reader.string();
                    break;
                case 7:
                    message.reward = reader.string();
                    break;
                case 8:
                    message.intro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return WorldGiftTask;
    })();
    
    $root.WorldLv = (function() {
    
        /**
         * Properties of a WorldLv.
         * @exports IWorldLv
         * @interface IWorldLv
         * @property {number|null} [id] WorldLv id
         * @property {number|null} [lv] WorldLv lv
         * @property {number|null} [exp] WorldLv exp
         * @property {number|null} [initFood] WorldLv initFood
         * @property {string|null} [independentStateReward] WorldLv independentStateReward
         * @property {string|null} [stateRight] WorldLv stateRight
         * @property {string|null} [intro] WorldLv intro
         */
    
        /**
         * Constructs a new WorldLv.
         * @exports WorldLv
         * @classdesc Represents a WorldLv.
         * @implements IWorldLv
         * @constructor
         * @param {IWorldLv=} [properties] Properties to set
         */
        function WorldLv(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * WorldLv id.
         * @member {number} id
         * @memberof WorldLv
         * @instance
         */
        WorldLv.prototype.id = 0;
    
        /**
         * WorldLv lv.
         * @member {number} lv
         * @memberof WorldLv
         * @instance
         */
        WorldLv.prototype.lv = 0;
    
        /**
         * WorldLv exp.
         * @member {number} exp
         * @memberof WorldLv
         * @instance
         */
        WorldLv.prototype.exp = 0;
    
        /**
         * WorldLv initFood.
         * @member {number} initFood
         * @memberof WorldLv
         * @instance
         */
        WorldLv.prototype.initFood = 0;
    
        /**
         * WorldLv independentStateReward.
         * @member {string} independentStateReward
         * @memberof WorldLv
         * @instance
         */
        WorldLv.prototype.independentStateReward = "";
    
        /**
         * WorldLv stateRight.
         * @member {string} stateRight
         * @memberof WorldLv
         * @instance
         */
        WorldLv.prototype.stateRight = "";
    
        /**
         * WorldLv intro.
         * @member {string} intro
         * @memberof WorldLv
         * @instance
         */
        WorldLv.prototype.intro = "";
    
        /**
         * Decodes a WorldLv message from the specified reader or buffer.
         * @function decode
         * @memberof WorldLv
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {WorldLv} WorldLv
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        WorldLv.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WorldLv();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.lv = reader.int32();
                    break;
                case 3:
                    message.exp = reader.int32();
                    break;
                case 4:
                    message.initFood = reader.int32();
                    break;
                case 5:
                    message.independentStateReward = reader.string();
                    break;
                case 6:
                    message.stateRight = reader.string();
                    break;
                case 7:
                    message.intro = reader.string();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return WorldLv;
    })();
    
    $root.WorldPreventRob = (function() {
    
        /**
         * Properties of a WorldPreventRob.
         * @exports IWorldPreventRob
         * @interface IWorldPreventRob
         * @property {number|null} [id] WorldPreventRob id
         * @property {number|null} [robNum] WorldPreventRob robNum
         * @property {number|null} [befoundRatio] WorldPreventRob befoundRatio
         */
    
        /**
         * Constructs a new WorldPreventRob.
         * @exports WorldPreventRob
         * @classdesc Represents a WorldPreventRob.
         * @implements IWorldPreventRob
         * @constructor
         * @param {IWorldPreventRob=} [properties] Properties to set
         */
        function WorldPreventRob(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * WorldPreventRob id.
         * @member {number} id
         * @memberof WorldPreventRob
         * @instance
         */
        WorldPreventRob.prototype.id = 0;
    
        /**
         * WorldPreventRob robNum.
         * @member {number} robNum
         * @memberof WorldPreventRob
         * @instance
         */
        WorldPreventRob.prototype.robNum = 0;
    
        /**
         * WorldPreventRob befoundRatio.
         * @member {number} befoundRatio
         * @memberof WorldPreventRob
         * @instance
         */
        WorldPreventRob.prototype.befoundRatio = 0;
    
        /**
         * Decodes a WorldPreventRob message from the specified reader or buffer.
         * @function decode
         * @memberof WorldPreventRob
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {WorldPreventRob} WorldPreventRob
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        WorldPreventRob.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WorldPreventRob();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.robNum = reader.int32();
                    break;
                case 3:
                    message.befoundRatio = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return WorldPreventRob;
    })();
    
    $root.WorldSearch = (function() {
    
        /**
         * Properties of a WorldSearch.
         * @exports IWorldSearch
         * @interface IWorldSearch
         * @property {number|null} [id] WorldSearch id
         * @property {string|null} [name] WorldSearch name
         * @property {number|null} [type] WorldSearch type
         * @property {number|null} [position1Weight] WorldSearch position1Weight
         * @property {number|null} [position2Weight] WorldSearch position2Weight
         * @property {number|null} [position3Weight] WorldSearch position3Weight
         */
    
        /**
         * Constructs a new WorldSearch.
         * @exports WorldSearch
         * @classdesc Represents a WorldSearch.
         * @implements IWorldSearch
         * @constructor
         * @param {IWorldSearch=} [properties] Properties to set
         */
        function WorldSearch(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * WorldSearch id.
         * @member {number} id
         * @memberof WorldSearch
         * @instance
         */
        WorldSearch.prototype.id = 0;
    
        /**
         * WorldSearch name.
         * @member {string} name
         * @memberof WorldSearch
         * @instance
         */
        WorldSearch.prototype.name = "";
    
        /**
         * WorldSearch type.
         * @member {number} type
         * @memberof WorldSearch
         * @instance
         */
        WorldSearch.prototype.type = 0;
    
        /**
         * WorldSearch position1Weight.
         * @member {number} position1Weight
         * @memberof WorldSearch
         * @instance
         */
        WorldSearch.prototype.position1Weight = 0;
    
        /**
         * WorldSearch position2Weight.
         * @member {number} position2Weight
         * @memberof WorldSearch
         * @instance
         */
        WorldSearch.prototype.position2Weight = 0;
    
        /**
         * WorldSearch position3Weight.
         * @member {number} position3Weight
         * @memberof WorldSearch
         * @instance
         */
        WorldSearch.prototype.position3Weight = 0;
    
        /**
         * Decodes a WorldSearch message from the specified reader or buffer.
         * @function decode
         * @memberof WorldSearch
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {WorldSearch} WorldSearch
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        WorldSearch.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WorldSearch();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.type = reader.int32();
                    break;
                case 4:
                    message.position1Weight = reader.int32();
                    break;
                case 5:
                    message.position2Weight = reader.int32();
                    break;
                case 6:
                    message.position3Weight = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return WorldSearch;
    })();
    
    $root.WorldShop = (function() {
    
        /**
         * Properties of a WorldShop.
         * @exports IWorldShop
         * @interface IWorldShop
         * @property {number|null} [id] WorldShop id
         * @property {string|null} [name] WorldShop name
         * @property {string|null} [intro] WorldShop intro
         * @property {string|null} [cost] WorldShop cost
         * @property {string|null} [reward] WorldShop reward
         * @property {string|null} [condition] WorldShop condition
         * @property {number|null} [showWeight] WorldShop showWeight
         * @property {number|null} [num] WorldShop num
         * @property {number|null} [type] WorldShop type
         * @property {number|null} [lv] WorldShop lv
         * @property {number|null} [costDiamond] WorldShop costDiamond
         * @property {number|null} [costDiamAdd] WorldShop costDiamAdd
         * @property {number|null} [costDiamMax] WorldShop costDiamMax
         */
    
        /**
         * Constructs a new WorldShop.
         * @exports WorldShop
         * @classdesc Represents a WorldShop.
         * @implements IWorldShop
         * @constructor
         * @param {IWorldShop=} [properties] Properties to set
         */
        function WorldShop(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * WorldShop id.
         * @member {number} id
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.id = 0;
    
        /**
         * WorldShop name.
         * @member {string} name
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.name = "";
    
        /**
         * WorldShop intro.
         * @member {string} intro
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.intro = "";
    
        /**
         * WorldShop cost.
         * @member {string} cost
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.cost = "";
    
        /**
         * WorldShop reward.
         * @member {string} reward
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.reward = "";
    
        /**
         * WorldShop condition.
         * @member {string} condition
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.condition = "";
    
        /**
         * WorldShop showWeight.
         * @member {number} showWeight
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.showWeight = 0;
    
        /**
         * WorldShop num.
         * @member {number} num
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.num = 0;
    
        /**
         * WorldShop type.
         * @member {number} type
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.type = 0;
    
        /**
         * WorldShop lv.
         * @member {number} lv
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.lv = 0;
    
        /**
         * WorldShop costDiamond.
         * @member {number} costDiamond
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.costDiamond = 0;
    
        /**
         * WorldShop costDiamAdd.
         * @member {number} costDiamAdd
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.costDiamAdd = 0;
    
        /**
         * WorldShop costDiamMax.
         * @member {number} costDiamMax
         * @memberof WorldShop
         * @instance
         */
        WorldShop.prototype.costDiamMax = 0;
    
        /**
         * Decodes a WorldShop message from the specified reader or buffer.
         * @function decode
         * @memberof WorldShop
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {WorldShop} WorldShop
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        WorldShop.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WorldShop();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.name = reader.string();
                    break;
                case 3:
                    message.intro = reader.string();
                    break;
                case 4:
                    message.cost = reader.string();
                    break;
                case 5:
                    message.reward = reader.string();
                    break;
                case 6:
                    message.condition = reader.string();
                    break;
                case 7:
                    message.showWeight = reader.int32();
                    break;
                case 8:
                    message.num = reader.int32();
                    break;
                case 9:
                    message.type = reader.int32();
                    break;
                case 10:
                    message.lv = reader.int32();
                    break;
                case 11:
                    message.costDiamond = reader.int32();
                    break;
                case 12:
                    message.costDiamAdd = reader.int32();
                    break;
                case 13:
                    message.costDiamMax = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return WorldShop;
    })();
    
    $root.WorldTask = (function() {
    
        /**
         * Properties of a WorldTask.
         * @exports IWorldTask
         * @interface IWorldTask
         * @property {number|null} [id] WorldTask id
         * @property {number|null} [turn] WorldTask turn
         * @property {number|null} [pos] WorldTask pos
         * @property {string|null} [intro] WorldTask intro
         * @property {string|null} [request] WorldTask request
         * @property {string|null} [reward] WorldTask reward
         * @property {string|null} [bigReward] WorldTask bigReward
         * @property {string|null} [simpleIntro] WorldTask simpleIntro
         * @property {number|null} [playerLv] WorldTask playerLv
         */
    
        /**
         * Constructs a new WorldTask.
         * @exports WorldTask
         * @classdesc Represents a WorldTask.
         * @implements IWorldTask
         * @constructor
         * @param {IWorldTask=} [properties] Properties to set
         */
        function WorldTask(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * WorldTask id.
         * @member {number} id
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.id = 0;
    
        /**
         * WorldTask turn.
         * @member {number} turn
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.turn = 0;
    
        /**
         * WorldTask pos.
         * @member {number} pos
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.pos = 0;
    
        /**
         * WorldTask intro.
         * @member {string} intro
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.intro = "";
    
        /**
         * WorldTask request.
         * @member {string} request
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.request = "";
    
        /**
         * WorldTask reward.
         * @member {string} reward
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.reward = "";
    
        /**
         * WorldTask bigReward.
         * @member {string} bigReward
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.bigReward = "";
    
        /**
         * WorldTask simpleIntro.
         * @member {string} simpleIntro
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.simpleIntro = "";
    
        /**
         * WorldTask playerLv.
         * @member {number} playerLv
         * @memberof WorldTask
         * @instance
         */
        WorldTask.prototype.playerLv = 0;
    
        /**
         * Decodes a WorldTask message from the specified reader or buffer.
         * @function decode
         * @memberof WorldTask
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {WorldTask} WorldTask
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        WorldTask.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WorldTask();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.turn = reader.int32();
                    break;
                case 3:
                    message.pos = reader.int32();
                    break;
                case 4:
                    message.intro = reader.string();
                    break;
                case 5:
                    message.request = reader.string();
                    break;
                case 6:
                    message.reward = reader.string();
                    break;
                case 7:
                    message.bigReward = reader.string();
                    break;
                case 8:
                    message.simpleIntro = reader.string();
                    break;
                case 9:
                    message.playerLv = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return WorldTask;
    })();
    
    $root.Worship = (function() {
    
        /**
         * Properties of a Worship.
         * @exports IWorship
         * @interface IWorship
         * @property {number|null} [id] Worship id
         * @property {string|null} [reward] Worship reward
         * @property {number|null} [rate] Worship rate
         */
    
        /**
         * Constructs a new Worship.
         * @exports Worship
         * @classdesc Represents a Worship.
         * @implements IWorship
         * @constructor
         * @param {IWorship=} [properties] Properties to set
         */
        function Worship(properties) {
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * Worship id.
         * @member {number} id
         * @memberof Worship
         * @instance
         */
        Worship.prototype.id = 0;
    
        /**
         * Worship reward.
         * @member {string} reward
         * @memberof Worship
         * @instance
         */
        Worship.prototype.reward = "";
    
        /**
         * Worship rate.
         * @member {number} rate
         * @memberof Worship
         * @instance
         */
        Worship.prototype.rate = 0;
    
        /**
         * Decodes a Worship message from the specified reader or buffer.
         * @function decode
         * @memberof Worship
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {Worship} Worship
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        Worship.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Worship();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    message.id = reader.int32();
                    break;
                case 2:
                    message.reward = reader.string();
                    break;
                case 3:
                    message.rate = reader.int32();
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return Worship;
    })();
    
    $root.StaticDataList = (function() {
    
        /**
         * Properties of a StaticDataList.
         * @exports IStaticDataList
         * @interface IStaticDataList
         * @property {Array.<IArmy>|null} [armyList] StaticDataList armyList
         * @property {Array.<IArmyGroup>|null} [armyGroupList] StaticDataList armyGroupList
         * @property {Array.<IArmyMonster>|null} [armyMonsterList] StaticDataList armyMonsterList
         * @property {Array.<IBar>|null} [barList] StaticDataList barList
         * @property {Array.<IBarDrop>|null} [barDropList] StaticDataList barDropList
         * @property {Array.<IBarracks>|null} [barracksList] StaticDataList barracksList
         * @property {Array.<IBuildingInfo>|null} [buildingInfoList] StaticDataList buildingInfoList
         * @property {Array.<ICbtDrop>|null} [cbtDropList] StaticDataList cbtDropList
         * @property {Array.<ICityReward>|null} [cityRewardList] StaticDataList cityRewardList
         * @property {Array.<IDbVersion>|null} [dbVersionList] StaticDataList dbVersionList
         * @property {Array.<IDoorConfig>|null} [doorConfigList] StaticDataList doorConfigList
         * @property {Array.<IEquip>|null} [equipList] StaticDataList equipList
         * @property {Array.<IEventConsumeRebate>|null} [eventConsumeRebateList] StaticDataList eventConsumeRebateList
         * @property {Array.<IEventDailyLogin>|null} [eventDailyLoginList] StaticDataList eventDailyLoginList
         * @property {Array.<IEventEquipBag>|null} [eventEquipBagList] StaticDataList eventEquipBagList
         * @property {Array.<IEventFishTreasure>|null} [eventFishTreasureList] StaticDataList eventFishTreasureList
         * @property {Array.<IEventFishTreasureDrop>|null} [eventFishTreasureDropList] StaticDataList eventFishTreasureDropList
         * @property {Array.<IEventLimitBar>|null} [eventLimitBarList] StaticDataList eventLimitBarList
         * @property {Array.<IEventLvUp>|null} [eventLvUpList] StaticDataList eventLvUpList
         * @property {Array.<IEventPayInfo>|null} [eventPayInfoList] StaticDataList eventPayInfoList
         * @property {Array.<IEventRanking>|null} [eventRankingList] StaticDataList eventRankingList
         * @property {Array.<IEventShare>|null} [eventShareList] StaticDataList eventShareList
         * @property {Array.<IFarmRank>|null} [farmRankList] StaticDataList farmRankList
         * @property {Array.<IFightForZhongyuan>|null} [fightForZhongyuanList] StaticDataList fightForZhongyuanList
         * @property {Array.<IFood>|null} [foodList] StaticDataList foodList
         * @property {Array.<IForceReport>|null} [forceReportList] StaticDataList forceReportList
         * @property {Array.<IGov>|null} [govList] StaticDataList govList
         * @property {Array.<IGrade>|null} [gradeList] StaticDataList gradeList
         * @property {Array.<IHammer>|null} [hammerList] StaticDataList hammerList
         * @property {Array.<IHappyCircle>|null} [happyCircleList] StaticDataList happyCircleList
         * @property {Array.<IHeroBreakthrough>|null} [heroBreakthroughList] StaticDataList heroBreakthroughList
         * @property {Array.<IHeroEffectInfo>|null} [heroEffectInfoList] StaticDataList heroEffectInfoList
         * @property {Array.<IHeroEffectInfoClient>|null} [heroEffectInfoClientList] StaticDataList heroEffectInfoClientList
         * @property {Array.<IHeroEquip>|null} [heroEquipList] StaticDataList heroEquipList
         * @property {Array.<IHeroInfo>|null} [heroInfoList] StaticDataList heroInfoList
         * @property {Array.<IHeroLvUpInfo>|null} [heroLvUpInfoList] StaticDataList heroLvUpInfoList
         * @property {Array.<IHeroSkeletonClient>|null} [heroSkeletonClientList] StaticDataList heroSkeletonClientList
         * @property {Array.<IHeroUpgrade>|null} [heroUpgradeList] StaticDataList heroUpgradeList
         * @property {Array.<IInitResource>|null} [initResourceList] StaticDataList initResourceList
         * @property {Array.<IIntimacy>|null} [intimacyList] StaticDataList intimacyList
         * @property {Array.<IItemInfo>|null} [itemInfoList] StaticDataList itemInfoList
         * @property {Array.<IKingTower>|null} [kingTowerList] StaticDataList kingTowerList
         * @property {Array.<IKingTowerMonster>|null} [kingTowerMonsterList] StaticDataList kingTowerMonsterList
         * @property {Array.<ILanguage>|null} [languageList] StaticDataList languageList
         * @property {Array.<ILeague>|null} [leagueList] StaticDataList leagueList
         * @property {Array.<ILeagueRanking>|null} [leagueRankingList] StaticDataList leagueRankingList
         * @property {Array.<ILengend>|null} [lengendList] StaticDataList lengendList
         * @property {Array.<ILimitInfo>|null} [limitInfoList] StaticDataList limitInfoList
         * @property {Array.<ILuckyBag>|null} [luckyBagList] StaticDataList luckyBagList
         * @property {Array.<ILvUp>|null} [lvUpList] StaticDataList lvUpList
         * @property {Array.<IMatchNpc>|null} [matchNpcList] StaticDataList matchNpcList
         * @property {Array.<IMatchReward>|null} [matchRewardList] StaticDataList matchRewardList
         * @property {Array.<IMonster>|null} [monsterList] StaticDataList monsterList
         * @property {Array.<INotice>|null} [noticeList] StaticDataList noticeList
         * @property {Array.<IOnlineReward>|null} [onlineRewardList] StaticDataList onlineRewardList
         * @property {Array.<IPalace>|null} [palaceList] StaticDataList palaceList
         * @property {Array.<IParams>|null} [paramsList] StaticDataList paramsList
         * @property {Array.<IPayInfo>|null} [payInfoList] StaticDataList payInfoList
         * @property {Array.<IPlot>|null} [plotList] StaticDataList plotList
         * @property {Array.<IPower>|null} [powerList] StaticDataList powerList
         * @property {Array.<IRandomName>|null} [randomNameList] StaticDataList randomNameList
         * @property {Array.<IRankingReward>|null} [rankingRewardList] StaticDataList rankingRewardList
         * @property {Array.<ISeries>|null} [seriesList] StaticDataList seriesList
         * @property {Array.<ITaskInfo>|null} [taskInfoList] StaticDataList taskInfoList
         * @property {Array.<ITaskProgress>|null} [taskProgressList] StaticDataList taskProgressList
         * @property {Array.<ITbc>|null} [tbcList] StaticDataList tbcList
         * @property {Array.<ITbcShop>|null} [tbcShopList] StaticDataList tbcShopList
         * @property {Array.<ITech>|null} [techList] StaticDataList techList
         * @property {Array.<ITreasure>|null} [treasureList] StaticDataList treasureList
         * @property {Array.<ITrick>|null} [trickList] StaticDataList trickList
         * @property {Array.<IVip>|null} [vipList] StaticDataList vipList
         * @property {Array.<IVisitor>|null} [visitorList] StaticDataList visitorList
         * @property {Array.<IWorld>|null} [worldList] StaticDataList worldList
         * @property {Array.<IWorldGiftTask>|null} [worldGiftTaskList] StaticDataList worldGiftTaskList
         * @property {Array.<IWorldLv>|null} [worldLvList] StaticDataList worldLvList
         * @property {Array.<IWorldPreventRob>|null} [worldPreventRobList] StaticDataList worldPreventRobList
         * @property {Array.<IWorldSearch>|null} [worldSearchList] StaticDataList worldSearchList
         * @property {Array.<IWorldShop>|null} [worldShopList] StaticDataList worldShopList
         * @property {Array.<IWorldTask>|null} [worldTaskList] StaticDataList worldTaskList
         * @property {Array.<IWorship>|null} [worshipList] StaticDataList worshipList
         */
    
        /**
         * Constructs a new StaticDataList.
         * @exports StaticDataList
         * @classdesc Represents a StaticDataList.
         * @implements IStaticDataList
         * @constructor
         * @param {IStaticDataList=} [properties] Properties to set
         */
        function StaticDataList(properties) {
            this.armyList = [];
            this.armyGroupList = [];
            this.armyMonsterList = [];
            this.barList = [];
            this.barDropList = [];
            this.barracksList = [];
            this.buildingInfoList = [];
            this.cbtDropList = [];
            this.cityRewardList = [];
            this.dbVersionList = [];
            this.doorConfigList = [];
            this.equipList = [];
            this.eventConsumeRebateList = [];
            this.eventDailyLoginList = [];
            this.eventEquipBagList = [];
            this.eventFishTreasureList = [];
            this.eventFishTreasureDropList = [];
            this.eventLimitBarList = [];
            this.eventLvUpList = [];
            this.eventPayInfoList = [];
            this.eventRankingList = [];
            this.eventShareList = [];
            this.farmRankList = [];
            this.fightForZhongyuanList = [];
            this.foodList = [];
            this.forceReportList = [];
            this.govList = [];
            this.gradeList = [];
            this.hammerList = [];
            this.happyCircleList = [];
            this.heroBreakthroughList = [];
            this.heroEffectInfoList = [];
            this.heroEffectInfoClientList = [];
            this.heroEquipList = [];
            this.heroInfoList = [];
            this.heroLvUpInfoList = [];
            this.heroSkeletonClientList = [];
            this.heroUpgradeList = [];
            this.initResourceList = [];
            this.intimacyList = [];
            this.itemInfoList = [];
            this.kingTowerList = [];
            this.kingTowerMonsterList = [];
            this.languageList = [];
            this.leagueList = [];
            this.leagueRankingList = [];
            this.lengendList = [];
            this.limitInfoList = [];
            this.luckyBagList = [];
            this.lvUpList = [];
            this.matchNpcList = [];
            this.matchRewardList = [];
            this.monsterList = [];
            this.noticeList = [];
            this.onlineRewardList = [];
            this.palaceList = [];
            this.paramsList = [];
            this.payInfoList = [];
            this.plotList = [];
            this.powerList = [];
            this.randomNameList = [];
            this.rankingRewardList = [];
            this.seriesList = [];
            this.taskInfoList = [];
            this.taskProgressList = [];
            this.tbcList = [];
            this.tbcShopList = [];
            this.techList = [];
            this.treasureList = [];
            this.trickList = [];
            this.vipList = [];
            this.visitorList = [];
            this.worldList = [];
            this.worldGiftTaskList = [];
            this.worldLvList = [];
            this.worldPreventRobList = [];
            this.worldSearchList = [];
            this.worldShopList = [];
            this.worldTaskList = [];
            this.worshipList = [];
            if (properties)
                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
                    if (properties[keys[i]] != null)
                        this[keys[i]] = properties[keys[i]];
        }
    
        /**
         * StaticDataList armyList.
         * @member {Array.<IArmy>} armyList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.armyList = $util.emptyArray;
    
        /**
         * StaticDataList armyGroupList.
         * @member {Array.<IArmyGroup>} armyGroupList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.armyGroupList = $util.emptyArray;
    
        /**
         * StaticDataList armyMonsterList.
         * @member {Array.<IArmyMonster>} armyMonsterList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.armyMonsterList = $util.emptyArray;
    
        /**
         * StaticDataList barList.
         * @member {Array.<IBar>} barList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.barList = $util.emptyArray;
    
        /**
         * StaticDataList barDropList.
         * @member {Array.<IBarDrop>} barDropList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.barDropList = $util.emptyArray;
    
        /**
         * StaticDataList barracksList.
         * @member {Array.<IBarracks>} barracksList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.barracksList = $util.emptyArray;
    
        /**
         * StaticDataList buildingInfoList.
         * @member {Array.<IBuildingInfo>} buildingInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.buildingInfoList = $util.emptyArray;
    
        /**
         * StaticDataList cbtDropList.
         * @member {Array.<ICbtDrop>} cbtDropList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.cbtDropList = $util.emptyArray;
    
        /**
         * StaticDataList cityRewardList.
         * @member {Array.<ICityReward>} cityRewardList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.cityRewardList = $util.emptyArray;
    
        /**
         * StaticDataList dbVersionList.
         * @member {Array.<IDbVersion>} dbVersionList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.dbVersionList = $util.emptyArray;
    
        /**
         * StaticDataList doorConfigList.
         * @member {Array.<IDoorConfig>} doorConfigList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.doorConfigList = $util.emptyArray;
    
        /**
         * StaticDataList equipList.
         * @member {Array.<IEquip>} equipList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.equipList = $util.emptyArray;
    
        /**
         * StaticDataList eventConsumeRebateList.
         * @member {Array.<IEventConsumeRebate>} eventConsumeRebateList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventConsumeRebateList = $util.emptyArray;
    
        /**
         * StaticDataList eventDailyLoginList.
         * @member {Array.<IEventDailyLogin>} eventDailyLoginList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventDailyLoginList = $util.emptyArray;
    
        /**
         * StaticDataList eventEquipBagList.
         * @member {Array.<IEventEquipBag>} eventEquipBagList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventEquipBagList = $util.emptyArray;
    
        /**
         * StaticDataList eventFishTreasureList.
         * @member {Array.<IEventFishTreasure>} eventFishTreasureList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventFishTreasureList = $util.emptyArray;
    
        /**
         * StaticDataList eventFishTreasureDropList.
         * @member {Array.<IEventFishTreasureDrop>} eventFishTreasureDropList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventFishTreasureDropList = $util.emptyArray;
    
        /**
         * StaticDataList eventLimitBarList.
         * @member {Array.<IEventLimitBar>} eventLimitBarList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventLimitBarList = $util.emptyArray;
    
        /**
         * StaticDataList eventLvUpList.
         * @member {Array.<IEventLvUp>} eventLvUpList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventLvUpList = $util.emptyArray;
    
        /**
         * StaticDataList eventPayInfoList.
         * @member {Array.<IEventPayInfo>} eventPayInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventPayInfoList = $util.emptyArray;
    
        /**
         * StaticDataList eventRankingList.
         * @member {Array.<IEventRanking>} eventRankingList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventRankingList = $util.emptyArray;
    
        /**
         * StaticDataList eventShareList.
         * @member {Array.<IEventShare>} eventShareList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.eventShareList = $util.emptyArray;
    
        /**
         * StaticDataList farmRankList.
         * @member {Array.<IFarmRank>} farmRankList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.farmRankList = $util.emptyArray;
    
        /**
         * StaticDataList fightForZhongyuanList.
         * @member {Array.<IFightForZhongyuan>} fightForZhongyuanList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.fightForZhongyuanList = $util.emptyArray;
    
        /**
         * StaticDataList foodList.
         * @member {Array.<IFood>} foodList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.foodList = $util.emptyArray;
    
        /**
         * StaticDataList forceReportList.
         * @member {Array.<IForceReport>} forceReportList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.forceReportList = $util.emptyArray;
    
        /**
         * StaticDataList govList.
         * @member {Array.<IGov>} govList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.govList = $util.emptyArray;
    
        /**
         * StaticDataList gradeList.
         * @member {Array.<IGrade>} gradeList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.gradeList = $util.emptyArray;
    
        /**
         * StaticDataList hammerList.
         * @member {Array.<IHammer>} hammerList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.hammerList = $util.emptyArray;
    
        /**
         * StaticDataList happyCircleList.
         * @member {Array.<IHappyCircle>} happyCircleList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.happyCircleList = $util.emptyArray;
    
        /**
         * StaticDataList heroBreakthroughList.
         * @member {Array.<IHeroBreakthrough>} heroBreakthroughList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroBreakthroughList = $util.emptyArray;
    
        /**
         * StaticDataList heroEffectInfoList.
         * @member {Array.<IHeroEffectInfo>} heroEffectInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroEffectInfoList = $util.emptyArray;
    
        /**
         * StaticDataList heroEffectInfoClientList.
         * @member {Array.<IHeroEffectInfoClient>} heroEffectInfoClientList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroEffectInfoClientList = $util.emptyArray;
    
        /**
         * StaticDataList heroEquipList.
         * @member {Array.<IHeroEquip>} heroEquipList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroEquipList = $util.emptyArray;
    
        /**
         * StaticDataList heroInfoList.
         * @member {Array.<IHeroInfo>} heroInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroInfoList = $util.emptyArray;
    
        /**
         * StaticDataList heroLvUpInfoList.
         * @member {Array.<IHeroLvUpInfo>} heroLvUpInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroLvUpInfoList = $util.emptyArray;
    
        /**
         * StaticDataList heroSkeletonClientList.
         * @member {Array.<IHeroSkeletonClient>} heroSkeletonClientList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroSkeletonClientList = $util.emptyArray;
    
        /**
         * StaticDataList heroUpgradeList.
         * @member {Array.<IHeroUpgrade>} heroUpgradeList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.heroUpgradeList = $util.emptyArray;
    
        /**
         * StaticDataList initResourceList.
         * @member {Array.<IInitResource>} initResourceList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.initResourceList = $util.emptyArray;
    
        /**
         * StaticDataList intimacyList.
         * @member {Array.<IIntimacy>} intimacyList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.intimacyList = $util.emptyArray;
    
        /**
         * StaticDataList itemInfoList.
         * @member {Array.<IItemInfo>} itemInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.itemInfoList = $util.emptyArray;
    
        /**
         * StaticDataList kingTowerList.
         * @member {Array.<IKingTower>} kingTowerList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.kingTowerList = $util.emptyArray;
    
        /**
         * StaticDataList kingTowerMonsterList.
         * @member {Array.<IKingTowerMonster>} kingTowerMonsterList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.kingTowerMonsterList = $util.emptyArray;
    
        /**
         * StaticDataList languageList.
         * @member {Array.<ILanguage>} languageList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.languageList = $util.emptyArray;
    
        /**
         * StaticDataList leagueList.
         * @member {Array.<ILeague>} leagueList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.leagueList = $util.emptyArray;
    
        /**
         * StaticDataList leagueRankingList.
         * @member {Array.<ILeagueRanking>} leagueRankingList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.leagueRankingList = $util.emptyArray;
    
        /**
         * StaticDataList lengendList.
         * @member {Array.<ILengend>} lengendList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.lengendList = $util.emptyArray;
    
        /**
         * StaticDataList limitInfoList.
         * @member {Array.<ILimitInfo>} limitInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.limitInfoList = $util.emptyArray;
    
        /**
         * StaticDataList luckyBagList.
         * @member {Array.<ILuckyBag>} luckyBagList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.luckyBagList = $util.emptyArray;
    
        /**
         * StaticDataList lvUpList.
         * @member {Array.<ILvUp>} lvUpList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.lvUpList = $util.emptyArray;
    
        /**
         * StaticDataList matchNpcList.
         * @member {Array.<IMatchNpc>} matchNpcList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.matchNpcList = $util.emptyArray;
    
        /**
         * StaticDataList matchRewardList.
         * @member {Array.<IMatchReward>} matchRewardList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.matchRewardList = $util.emptyArray;
    
        /**
         * StaticDataList monsterList.
         * @member {Array.<IMonster>} monsterList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.monsterList = $util.emptyArray;
    
        /**
         * StaticDataList noticeList.
         * @member {Array.<INotice>} noticeList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.noticeList = $util.emptyArray;
    
        /**
         * StaticDataList onlineRewardList.
         * @member {Array.<IOnlineReward>} onlineRewardList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.onlineRewardList = $util.emptyArray;
    
        /**
         * StaticDataList palaceList.
         * @member {Array.<IPalace>} palaceList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.palaceList = $util.emptyArray;
    
        /**
         * StaticDataList paramsList.
         * @member {Array.<IParams>} paramsList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.paramsList = $util.emptyArray;
    
        /**
         * StaticDataList payInfoList.
         * @member {Array.<IPayInfo>} payInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.payInfoList = $util.emptyArray;
    
        /**
         * StaticDataList plotList.
         * @member {Array.<IPlot>} plotList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.plotList = $util.emptyArray;
    
        /**
         * StaticDataList powerList.
         * @member {Array.<IPower>} powerList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.powerList = $util.emptyArray;
    
        /**
         * StaticDataList randomNameList.
         * @member {Array.<IRandomName>} randomNameList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.randomNameList = $util.emptyArray;
    
        /**
         * StaticDataList rankingRewardList.
         * @member {Array.<IRankingReward>} rankingRewardList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.rankingRewardList = $util.emptyArray;
    
        /**
         * StaticDataList seriesList.
         * @member {Array.<ISeries>} seriesList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.seriesList = $util.emptyArray;
    
        /**
         * StaticDataList taskInfoList.
         * @member {Array.<ITaskInfo>} taskInfoList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.taskInfoList = $util.emptyArray;
    
        /**
         * StaticDataList taskProgressList.
         * @member {Array.<ITaskProgress>} taskProgressList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.taskProgressList = $util.emptyArray;
    
        /**
         * StaticDataList tbcList.
         * @member {Array.<ITbc>} tbcList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.tbcList = $util.emptyArray;
    
        /**
         * StaticDataList tbcShopList.
         * @member {Array.<ITbcShop>} tbcShopList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.tbcShopList = $util.emptyArray;
    
        /**
         * StaticDataList techList.
         * @member {Array.<ITech>} techList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.techList = $util.emptyArray;
    
        /**
         * StaticDataList treasureList.
         * @member {Array.<ITreasure>} treasureList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.treasureList = $util.emptyArray;
    
        /**
         * StaticDataList trickList.
         * @member {Array.<ITrick>} trickList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.trickList = $util.emptyArray;
    
        /**
         * StaticDataList vipList.
         * @member {Array.<IVip>} vipList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.vipList = $util.emptyArray;
    
        /**
         * StaticDataList visitorList.
         * @member {Array.<IVisitor>} visitorList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.visitorList = $util.emptyArray;
    
        /**
         * StaticDataList worldList.
         * @member {Array.<IWorld>} worldList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worldList = $util.emptyArray;
    
        /**
         * StaticDataList worldGiftTaskList.
         * @member {Array.<IWorldGiftTask>} worldGiftTaskList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worldGiftTaskList = $util.emptyArray;
    
        /**
         * StaticDataList worldLvList.
         * @member {Array.<IWorldLv>} worldLvList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worldLvList = $util.emptyArray;
    
        /**
         * StaticDataList worldPreventRobList.
         * @member {Array.<IWorldPreventRob>} worldPreventRobList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worldPreventRobList = $util.emptyArray;
    
        /**
         * StaticDataList worldSearchList.
         * @member {Array.<IWorldSearch>} worldSearchList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worldSearchList = $util.emptyArray;
    
        /**
         * StaticDataList worldShopList.
         * @member {Array.<IWorldShop>} worldShopList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worldShopList = $util.emptyArray;
    
        /**
         * StaticDataList worldTaskList.
         * @member {Array.<IWorldTask>} worldTaskList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worldTaskList = $util.emptyArray;
    
        /**
         * StaticDataList worshipList.
         * @member {Array.<IWorship>} worshipList
         * @memberof StaticDataList
         * @instance
         */
        StaticDataList.prototype.worshipList = $util.emptyArray;
    
        /**
         * Decodes a StaticDataList message from the specified reader or buffer.
         * @function decode
         * @memberof StaticDataList
         * @static
         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
         * @param {number} [length] Message length if known beforehand
         * @returns {StaticDataList} StaticDataList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        StaticDataList.decode = function decode(reader, length) {
            if (!(reader instanceof $Reader))
                reader = $Reader.create(reader);
            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.StaticDataList();
            while (reader.pos < end) {
                var tag = reader.uint32();
                switch (tag >>> 3) {
                case 1:
                    if (!(message.armyList && message.armyList.length))
                        message.armyList = [];
                    message.armyList.push($root.Army.decode(reader, reader.uint32()));
                    break;
                case 2:
                    if (!(message.armyGroupList && message.armyGroupList.length))
                        message.armyGroupList = [];
                    message.armyGroupList.push($root.ArmyGroup.decode(reader, reader.uint32()));
                    break;
                case 3:
                    if (!(message.armyMonsterList && message.armyMonsterList.length))
                        message.armyMonsterList = [];
                    message.armyMonsterList.push($root.ArmyMonster.decode(reader, reader.uint32()));
                    break;
                case 4:
                    if (!(message.barList && message.barList.length))
                        message.barList = [];
                    message.barList.push($root.Bar.decode(reader, reader.uint32()));
                    break;
                case 5:
                    if (!(message.barDropList && message.barDropList.length))
                        message.barDropList = [];
                    message.barDropList.push($root.BarDrop.decode(reader, reader.uint32()));
                    break;
                case 6:
                    if (!(message.barracksList && message.barracksList.length))
                        message.barracksList = [];
                    message.barracksList.push($root.Barracks.decode(reader, reader.uint32()));
                    break;
                case 7:
                    if (!(message.buildingInfoList && message.buildingInfoList.length))
                        message.buildingInfoList = [];
                    message.buildingInfoList.push($root.BuildingInfo.decode(reader, reader.uint32()));
                    break;
                case 8:
                    if (!(message.cbtDropList && message.cbtDropList.length))
                        message.cbtDropList = [];
                    message.cbtDropList.push($root.CbtDrop.decode(reader, reader.uint32()));
                    break;
                case 9:
                    if (!(message.cityRewardList && message.cityRewardList.length))
                        message.cityRewardList = [];
                    message.cityRewardList.push($root.CityReward.decode(reader, reader.uint32()));
                    break;
                case 10:
                    if (!(message.dbVersionList && message.dbVersionList.length))
                        message.dbVersionList = [];
                    message.dbVersionList.push($root.DbVersion.decode(reader, reader.uint32()));
                    break;
                case 11:
                    if (!(message.doorConfigList && message.doorConfigList.length))
                        message.doorConfigList = [];
                    message.doorConfigList.push($root.DoorConfig.decode(reader, reader.uint32()));
                    break;
                case 12:
                    if (!(message.equipList && message.equipList.length))
                        message.equipList = [];
                    message.equipList.push($root.Equip.decode(reader, reader.uint32()));
                    break;
                case 13:
                    if (!(message.eventConsumeRebateList && message.eventConsumeRebateList.length))
                        message.eventConsumeRebateList = [];
                    message.eventConsumeRebateList.push($root.EventConsumeRebate.decode(reader, reader.uint32()));
                    break;
                case 14:
                    if (!(message.eventDailyLoginList && message.eventDailyLoginList.length))
                        message.eventDailyLoginList = [];
                    message.eventDailyLoginList.push($root.EventDailyLogin.decode(reader, reader.uint32()));
                    break;
                case 15:
                    if (!(message.eventEquipBagList && message.eventEquipBagList.length))
                        message.eventEquipBagList = [];
                    message.eventEquipBagList.push($root.EventEquipBag.decode(reader, reader.uint32()));
                    break;
                case 16:
                    if (!(message.eventFishTreasureList && message.eventFishTreasureList.length))
                        message.eventFishTreasureList = [];
                    message.eventFishTreasureList.push($root.EventFishTreasure.decode(reader, reader.uint32()));
                    break;
                case 17:
                    if (!(message.eventFishTreasureDropList && message.eventFishTreasureDropList.length))
                        message.eventFishTreasureDropList = [];
                    message.eventFishTreasureDropList.push($root.EventFishTreasureDrop.decode(reader, reader.uint32()));
                    break;
                case 18:
                    if (!(message.eventLimitBarList && message.eventLimitBarList.length))
                        message.eventLimitBarList = [];
                    message.eventLimitBarList.push($root.EventLimitBar.decode(reader, reader.uint32()));
                    break;
                case 19:
                    if (!(message.eventLvUpList && message.eventLvUpList.length))
                        message.eventLvUpList = [];
                    message.eventLvUpList.push($root.EventLvUp.decode(reader, reader.uint32()));
                    break;
                case 20:
                    if (!(message.eventPayInfoList && message.eventPayInfoList.length))
                        message.eventPayInfoList = [];
                    message.eventPayInfoList.push($root.EventPayInfo.decode(reader, reader.uint32()));
                    break;
                case 21:
                    if (!(message.eventRankingList && message.eventRankingList.length))
                        message.eventRankingList = [];
                    message.eventRankingList.push($root.EventRanking.decode(reader, reader.uint32()));
                    break;
                case 22:
                    if (!(message.eventShareList && message.eventShareList.length))
                        message.eventShareList = [];
                    message.eventShareList.push($root.EventShare.decode(reader, reader.uint32()));
                    break;
                case 23:
                    if (!(message.farmRankList && message.farmRankList.length))
                        message.farmRankList = [];
                    message.farmRankList.push($root.FarmRank.decode(reader, reader.uint32()));
                    break;
                case 24:
                    if (!(message.fightForZhongyuanList && message.fightForZhongyuanList.length))
                        message.fightForZhongyuanList = [];
                    message.fightForZhongyuanList.push($root.FightForZhongyuan.decode(reader, reader.uint32()));
                    break;
                case 25:
                    if (!(message.foodList && message.foodList.length))
                        message.foodList = [];
                    message.foodList.push($root.Food.decode(reader, reader.uint32()));
                    break;
                case 26:
                    if (!(message.forceReportList && message.forceReportList.length))
                        message.forceReportList = [];
                    message.forceReportList.push($root.ForceReport.decode(reader, reader.uint32()));
                    break;
                case 27:
                    if (!(message.govList && message.govList.length))
                        message.govList = [];
                    message.govList.push($root.Gov.decode(reader, reader.uint32()));
                    break;
                case 28:
                    if (!(message.gradeList && message.gradeList.length))
                        message.gradeList = [];
                    message.gradeList.push($root.Grade.decode(reader, reader.uint32()));
                    break;
                case 29:
                    if (!(message.hammerList && message.hammerList.length))
                        message.hammerList = [];
                    message.hammerList.push($root.Hammer.decode(reader, reader.uint32()));
                    break;
                case 30:
                    if (!(message.happyCircleList && message.happyCircleList.length))
                        message.happyCircleList = [];
                    message.happyCircleList.push($root.HappyCircle.decode(reader, reader.uint32()));
                    break;
                case 31:
                    if (!(message.heroBreakthroughList && message.heroBreakthroughList.length))
                        message.heroBreakthroughList = [];
                    message.heroBreakthroughList.push($root.HeroBreakthrough.decode(reader, reader.uint32()));
                    break;
                case 32:
                    if (!(message.heroEffectInfoList && message.heroEffectInfoList.length))
                        message.heroEffectInfoList = [];
                    message.heroEffectInfoList.push($root.HeroEffectInfo.decode(reader, reader.uint32()));
                    break;
                case 33:
                    if (!(message.heroEffectInfoClientList && message.heroEffectInfoClientList.length))
                        message.heroEffectInfoClientList = [];
                    message.heroEffectInfoClientList.push($root.HeroEffectInfoClient.decode(reader, reader.uint32()));
                    break;
                case 34:
                    if (!(message.heroEquipList && message.heroEquipList.length))
                        message.heroEquipList = [];
                    message.heroEquipList.push($root.HeroEquip.decode(reader, reader.uint32()));
                    break;
                case 35:
                    if (!(message.heroInfoList && message.heroInfoList.length))
                        message.heroInfoList = [];
                    message.heroInfoList.push($root.HeroInfo.decode(reader, reader.uint32()));
                    break;
                case 36:
                    if (!(message.heroLvUpInfoList && message.heroLvUpInfoList.length))
                        message.heroLvUpInfoList = [];
                    message.heroLvUpInfoList.push($root.HeroLvUpInfo.decode(reader, reader.uint32()));
                    break;
                case 37:
                    if (!(message.heroSkeletonClientList && message.heroSkeletonClientList.length))
                        message.heroSkeletonClientList = [];
                    message.heroSkeletonClientList.push($root.HeroSkeletonClient.decode(reader, reader.uint32()));
                    break;
                case 38:
                    if (!(message.heroUpgradeList && message.heroUpgradeList.length))
                        message.heroUpgradeList = [];
                    message.heroUpgradeList.push($root.HeroUpgrade.decode(reader, reader.uint32()));
                    break;
                case 39:
                    if (!(message.initResourceList && message.initResourceList.length))
                        message.initResourceList = [];
                    message.initResourceList.push($root.InitResource.decode(reader, reader.uint32()));
                    break;
                case 40:
                    if (!(message.intimacyList && message.intimacyList.length))
                        message.intimacyList = [];
                    message.intimacyList.push($root.Intimacy.decode(reader, reader.uint32()));
                    break;
                case 41:
                    if (!(message.itemInfoList && message.itemInfoList.length))
                        message.itemInfoList = [];
                    message.itemInfoList.push($root.ItemInfo.decode(reader, reader.uint32()));
                    break;
                case 42:
                    if (!(message.kingTowerList && message.kingTowerList.length))
                        message.kingTowerList = [];
                    message.kingTowerList.push($root.KingTower.decode(reader, reader.uint32()));
                    break;
                case 43:
                    if (!(message.kingTowerMonsterList && message.kingTowerMonsterList.length))
                        message.kingTowerMonsterList = [];
                    message.kingTowerMonsterList.push($root.KingTowerMonster.decode(reader, reader.uint32()));
                    break;
                case 44:
                    if (!(message.languageList && message.languageList.length))
                        message.languageList = [];
                    message.languageList.push($root.Language.decode(reader, reader.uint32()));
                    break;
                case 45:
                    if (!(message.leagueList && message.leagueList.length))
                        message.leagueList = [];
                    message.leagueList.push($root.League.decode(reader, reader.uint32()));
                    break;
                case 46:
                    if (!(message.leagueRankingList && message.leagueRankingList.length))
                        message.leagueRankingList = [];
                    message.leagueRankingList.push($root.LeagueRanking.decode(reader, reader.uint32()));
                    break;
                case 47:
                    if (!(message.lengendList && message.lengendList.length))
                        message.lengendList = [];
                    message.lengendList.push($root.Lengend.decode(reader, reader.uint32()));
                    break;
                case 48:
                    if (!(message.limitInfoList && message.limitInfoList.length))
                        message.limitInfoList = [];
                    message.limitInfoList.push($root.LimitInfo.decode(reader, reader.uint32()));
                    break;
                case 49:
                    if (!(message.luckyBagList && message.luckyBagList.length))
                        message.luckyBagList = [];
                    message.luckyBagList.push($root.LuckyBag.decode(reader, reader.uint32()));
                    break;
                case 50:
                    if (!(message.lvUpList && message.lvUpList.length))
                        message.lvUpList = [];
                    message.lvUpList.push($root.LvUp.decode(reader, reader.uint32()));
                    break;
                case 51:
                    if (!(message.matchNpcList && message.matchNpcList.length))
                        message.matchNpcList = [];
                    message.matchNpcList.push($root.MatchNpc.decode(reader, reader.uint32()));
                    break;
                case 52:
                    if (!(message.matchRewardList && message.matchRewardList.length))
                        message.matchRewardList = [];
                    message.matchRewardList.push($root.MatchReward.decode(reader, reader.uint32()));
                    break;
                case 53:
                    if (!(message.monsterList && message.monsterList.length))
                        message.monsterList = [];
                    message.monsterList.push($root.Monster.decode(reader, reader.uint32()));
                    break;
                case 54:
                    if (!(message.noticeList && message.noticeList.length))
                        message.noticeList = [];
                    message.noticeList.push($root.Notice.decode(reader, reader.uint32()));
                    break;
                case 55:
                    if (!(message.onlineRewardList && message.onlineRewardList.length))
                        message.onlineRewardList = [];
                    message.onlineRewardList.push($root.OnlineReward.decode(reader, reader.uint32()));
                    break;
                case 56:
                    if (!(message.palaceList && message.palaceList.length))
                        message.palaceList = [];
                    message.palaceList.push($root.Palace.decode(reader, reader.uint32()));
                    break;
                case 57:
                    if (!(message.paramsList && message.paramsList.length))
                        message.paramsList = [];
                    message.paramsList.push($root.Params.decode(reader, reader.uint32()));
                    break;
                case 58:
                    if (!(message.payInfoList && message.payInfoList.length))
                        message.payInfoList = [];
                    message.payInfoList.push($root.PayInfo.decode(reader, reader.uint32()));
                    break;
                case 59:
                    if (!(message.plotList && message.plotList.length))
                        message.plotList = [];
                    message.plotList.push($root.Plot.decode(reader, reader.uint32()));
                    break;
                case 60:
                    if (!(message.powerList && message.powerList.length))
                        message.powerList = [];
                    message.powerList.push($root.Power.decode(reader, reader.uint32()));
                    break;
                case 61:
                    if (!(message.randomNameList && message.randomNameList.length))
                        message.randomNameList = [];
                    message.randomNameList.push($root.RandomName.decode(reader, reader.uint32()));
                    break;
                case 62:
                    if (!(message.rankingRewardList && message.rankingRewardList.length))
                        message.rankingRewardList = [];
                    message.rankingRewardList.push($root.RankingReward.decode(reader, reader.uint32()));
                    break;
                case 63:
                    if (!(message.seriesList && message.seriesList.length))
                        message.seriesList = [];
                    message.seriesList.push($root.Series.decode(reader, reader.uint32()));
                    break;
                case 64:
                    if (!(message.taskInfoList && message.taskInfoList.length))
                        message.taskInfoList = [];
                    message.taskInfoList.push($root.TaskInfo.decode(reader, reader.uint32()));
                    break;
                case 65:
                    if (!(message.taskProgressList && message.taskProgressList.length))
                        message.taskProgressList = [];
                    message.taskProgressList.push($root.TaskProgress.decode(reader, reader.uint32()));
                    break;
                case 66:
                    if (!(message.tbcList && message.tbcList.length))
                        message.tbcList = [];
                    message.tbcList.push($root.Tbc.decode(reader, reader.uint32()));
                    break;
                case 67:
                    if (!(message.tbcShopList && message.tbcShopList.length))
                        message.tbcShopList = [];
                    message.tbcShopList.push($root.TbcShop.decode(reader, reader.uint32()));
                    break;
                case 68:
                    if (!(message.techList && message.techList.length))
                        message.techList = [];
                    message.techList.push($root.Tech.decode(reader, reader.uint32()));
                    break;
                case 69:
                    if (!(message.treasureList && message.treasureList.length))
                        message.treasureList = [];
                    message.treasureList.push($root.Treasure.decode(reader, reader.uint32()));
                    break;
                case 70:
                    if (!(message.trickList && message.trickList.length))
                        message.trickList = [];
                    message.trickList.push($root.Trick.decode(reader, reader.uint32()));
                    break;
                case 71:
                    if (!(message.vipList && message.vipList.length))
                        message.vipList = [];
                    message.vipList.push($root.Vip.decode(reader, reader.uint32()));
                    break;
                case 72:
                    if (!(message.visitorList && message.visitorList.length))
                        message.visitorList = [];
                    message.visitorList.push($root.Visitor.decode(reader, reader.uint32()));
                    break;
                case 73:
                    if (!(message.worldList && message.worldList.length))
                        message.worldList = [];
                    message.worldList.push($root.World.decode(reader, reader.uint32()));
                    break;
                case 74:
                    if (!(message.worldGiftTaskList && message.worldGiftTaskList.length))
                        message.worldGiftTaskList = [];
                    message.worldGiftTaskList.push($root.WorldGiftTask.decode(reader, reader.uint32()));
                    break;
                case 75:
                    if (!(message.worldLvList && message.worldLvList.length))
                        message.worldLvList = [];
                    message.worldLvList.push($root.WorldLv.decode(reader, reader.uint32()));
                    break;
                case 76:
                    if (!(message.worldPreventRobList && message.worldPreventRobList.length))
                        message.worldPreventRobList = [];
                    message.worldPreventRobList.push($root.WorldPreventRob.decode(reader, reader.uint32()));
                    break;
                case 77:
                    if (!(message.worldSearchList && message.worldSearchList.length))
                        message.worldSearchList = [];
                    message.worldSearchList.push($root.WorldSearch.decode(reader, reader.uint32()));
                    break;
                case 78:
                    if (!(message.worldShopList && message.worldShopList.length))
                        message.worldShopList = [];
                    message.worldShopList.push($root.WorldShop.decode(reader, reader.uint32()));
                    break;
                case 79:
                    if (!(message.worldTaskList && message.worldTaskList.length))
                        message.worldTaskList = [];
                    message.worldTaskList.push($root.WorldTask.decode(reader, reader.uint32()));
                    break;
                case 80:
                    if (!(message.worshipList && message.worshipList.length))
                        message.worshipList = [];
                    message.worshipList.push($root.Worship.decode(reader, reader.uint32()));
                    break;
                default:
                    reader.skipType(tag & 7);
                    break;
                }
            }
            return message;
        };
    
        return StaticDataList;
    })();

    return $root;
})(protobuf);
